如何在Go中格式化字符串

在本教程中,我们将介绍一些使用Go字符串的方法,以确保所有输出文本的格式正确。我们将讨论的主题包括:引号,撇号,多行,转义字符和原始字符串。

由于字符串通常由书面文本组成,因此我们可能希望通过标点符号,换行符和缩进来更好地控制字符串的外观以使其对人类更具可读性。

在本教程中,我们将介绍一些使用Go字符串的方法,以确保所有输出文本的格式正确。

字符串文字

让我们首先区分字符串文字字符串值 字符串文字是我们在计算机程序的源代码中看到的,包括引号。 字符串值是我们在调用fmt.Println函数并运行程序时看到的。

在“Hello,World!”程序中,字符串文字是"Hello, World!" 而字符串值是Hello, World! 没有引号。 当我们运行Go程序时,字符串值是我们在终端窗口中看到的输出。

但是一些字符串值可能需要包含引号,就像我们引用源时一样。 由于字符串文字和字符串值不相等,因此通常需要向字符串文字添加其他格式以确保以我们想要的方式显示字符串值。

行情

因为我们可以在Go中使用反引号( ` )或双引号( " ),所以通过在后引号括起的字符串中使用双引号来简单地在字符串中嵌入引号是很简单的:

`Sammy says, "Hello!"`

或者,要使用反向引号,可以将字符串括在双引号中:

"Sammy likes the `fmt` package for formatting strings.."

在我们将引号和双引号组合在一起的方式中,我们可以控制字符串中引号和引号的显示。

重要的是要记住在Go中使用后引号创建一个raw字符串文字,并使用双引号创建一个interpreted字符串文字。 要了解有关差异的更多信息,请阅读“ 使用字符串编写简介”教程。

逃脱角色

格式化字符串的另一种方法是使用转义字符 转义字符用于告诉代码以下字符具有特殊含义。 转义字符全部以反斜杠键( \ )与字符串中的另一个字符组合开始,以特定方式格式化给定字符串。

以下是几个常见转义字符的列表:

逃避角色 它的格式如何
\\ 反斜杠
\” 双引号
\ n 越线
\ t 标签(水平缩进)

让我们使用转义字符将引号添加到上面的引号上的示例,但这次我们将使用双引号来表示字符串:

fmt.Println("Sammy says, \"Hello!\"")
Sammy says, "Hello!"

通过使用转义字符\"我们可以使用双引号括起一个字符串,其中包含双引号之间引用的文本。

我们可以使用\n转义字符在不按Enter键或返回键的情况下断行:

fmt.Println("This string\nspans multiple\nlines.")
This string
spans multiple
lines.

我们也可以组合转义字符。 让我们打印一个多行字符串,并为列表列表包含制表符间距,例如:

fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")
1.      Shark
2.      Shrimp
10.     Squid

带有\t转义字符的水平缩进确保了在前面示例中第二列内的对齐,使得输出对于人类来说极其可读。

转义字符用于向可能难以或无法实现的字符串添加其他格式。 没有转义字符,你将无法构造Sammy says, "I like to use the `fmt` package"的字符串Sammy says, "I like to use the `fmt` package"

多行

在多行上打印字符串可以使文本对人类更具可读性。 通过多行,可以将字符串分组为干净有序的文本,格式化为字母,或用于维护诗歌或歌词的换行符。

要创建跨多行的字符串,后引号用于包含字符串。 请记住,虽然这将保留行返回,但它也创建了一个raw字符串文字。

`
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 
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将其用作转义字符。

原始字符串文字告诉Go忽略字符串中的所有格式,包括转义字符。

我们使用字符串周围的引号创建一个原始字符串:

fmt.Println(`Sammy says,\"The balloon\'s color is red.\"`)
Sammy says,\"The balloon\'s color is red.\"

通过使用给定字符串周围的引号构造原始字符串,我们可以保留反斜杠和用作转义字符的其他字符。

结论

本教程介绍了使用字符串处理Go中的文本格式的几种方法。 通过使用转义字符或原始字符串等技术,我们能够确保在屏幕上正确呈现程序的字符串,以便最终用户能够轻松读取所有输出文本。


分享按钮