由于字符串通常由书面文本组成,在很多情况下,我们可能希望通过标点符号、换行和缩进来更好地控制字符串的外观,以使其更易于阅读。
在本教程中,我们将介绍一些处理go字符串的方法,以确保所有输出文本的格式正确。
让我们首先区分字符串字面量和字符串值。字符串字面量就是我们在计算机程序的源代码中看到的,包括引号。当我们调用fmt.Println
函数并运行程序时,我们看到的是一个字符串。
在“Hello, World!”程序中,字符串字面量是"Hello, World!"
,而字符串值是 Hello, World!
,没有引号。这个字符串值就是我们运行Go程序时在终端窗口中看到的输出。
但是有些字符串值可能需要包含引号,比如我们引用一个源时。因为字符串字面量和字符串值并不相等,所以通常有必要为字符串字面量添加额外的格式,以确保字符串值按我们想要的方式显示。
因为我们可以在Go中使用反引号(`
)或双引号("
),通过在由反引号括起来的字符串中使用双引号,可以很简单地在字符串中嵌入引号:
`Sammy says, "Hello!"`
或者,要使用后引号,可以将字符串括在双引号中:
"Sammy likes the `fmt` package for formatting strings.."
通过使用反引号和双引号,我们可以控制字符串中引号和反引号的显示。
重要的是要记住,在Go中使用反引号会创建一个raw
字符串字面量,而使用双引号会创建一个interpret
字符串字面量。
另一种格式化字符串的方法是使用转义字符。转义字符用于告诉代码下面的字符具有特殊的含义。转义字符都以反斜杠键(\
)和字符串中的另一个字符开始,以某种方式格式化给定的字符串。
下面列出了一些常见的转义字符:
转义字符 | 它如何格式化 |
---|---|
|反斜线 | |
" | 双引号 |
\n | 换行符 |
\t | Tab(水平缩进) |
让我们使用转义字符将引号添加到上面的引号示例中,但这一次我们将使用双引号来表示字符串:
fmt.Println("Sammy says, \"Hello!\"")
OutputSammy says, "Hello!"
通过使用转义字符\"
,我们可以使用双引号将包含在双引号中文本的字符串括起来。
我们可以使用 \n
转义字符来换行,而无需键入回车键或回车键:
fmt.Println("This string\nspans multiple\nlines.")
OutputThis string
spans multiple
lines.
我们也可以组合转义字符。下面来打印一个多行字符串,并包含分项列表的制表符间距,例如:
fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")
Output1. Shark
2. Shrimp
10. Squid
在前面的例子中,\t
转义字符提供的水平缩进确保了在第二列内对齐,使输出非常易读。
转义字符用于为字符串添加额外的格式,这些格式可能很难或不可能实现。如果没有转义字符,你将无法构造字符串Sammy says, "I like to use the `fmt` package"
。
将字符串打印成多行可以提高文本的可读性。对于多行,字符串可以组合成干净有序的文本,格式化为字母,或用于保持诗歌或歌曲歌词的换行。
要创建跨多行的字符串,需要使用反引号将字符串括起来。请记住,虽然这将保留行返回,但它也创建了一个raw
字符串字面量。
`
This string is on
multiple lines
within three single
quotes on either side.
`
Output
This string is on
multiple lines
within three single
quotes on either side.
为了避免这种情况,你需要将第一行放在后引号的后面,并以后引号结束最后一行。
`This string is on
multiple lines
within three single
quotes on either side.`
如果你需要创建一个解释过的字符串字面量,可以使用双引号和+
操作符,但你需要插入自己的换行符。
"This string is on\n" +
"multiple lines\n" +
"within three single\n" +
"quotes on either side."
虽然反引号可以使长文本更容易打印和阅读,但如果你需要一个经过解释的字符串字面量,就需要使用双引号。
如果我们不希望字符串具有特殊的格式,该怎么办?例如,我们可能需要比较或计算有意使用反斜杠的计算机代码字符串,因此我们不希望将它用作转义字符。
原始字符串字面量告诉Go忽略字符串中的所有格式,包括转义字符。
我们使用反引号来创建一个原始字符串:
fmt.Println(`Sammy says,\"The balloon\'s color is red.\"`)
OutputSammy says,\"The balloon\'s color is red.\"
通过在给定字符串的两边使用反引号来构造原始字符串,我们可以保留反斜杠和其他用作转义字符的字符。
本教程介绍了在Go中格式化文本的几种方法。通过使用转义字符或原始字符串等技术,我们能够确保程序的字符串在屏幕上正确呈现,以便最终用户能够轻松地阅读所有输出的文本。