由于字符串通常是由书面文本组成的,有许多情况下,我们可能希望对字符串的外观有更大的控制权,以便通过点缀,线条断和入口来使它们更易于读取。
在本教程中,我们将讨论一些我们可以使用Go字符串的工作方式,以确保所有输出文本都被正确格式化。
名称: String Literals
让我们先区分一个 string literal 和一个 _string 值。 一个字符串是我们在计算机程序的源代码中看到的,包括引用标记。
在你好,世界!
程序中,字母字符串是你好,世界!
而字符串值是你好,世界!
没有引用标记。
但是,某些字符串值可能需要包含引用符号,例如当我们引用源时. 由于字符串值和字符串值不等同,因此通常需要为字符串添加额外的格式,以确保字符串值以我们预期的方式显示。
引用
由于我们可以在 Go 中使用后引文()或双引文(
"`),所以通过使用后引文附带的字符串中的双引文来嵌入字符串中的引文很简单:
1`Sammy says, "Hello!"`
或者,若要使用返回引文,您可以将字符串包含在双引文中:
1"Sammy likes the `fmt` package for formatting strings.."
在我们组合回报和双报的方式,我们可以控制我们的字符串中的报价标签和回报的显示。
重要的是要记住,在Go中使用后引文创建一个原始
字符串,使用双引文创建一个解读
字符串。
逃避角色
另一种方法来格式化字符串是使用一个 escape character。 逃生字符被用来告诉代码,下面的字符具有特殊的含义。
以下是一些常见的逃跑字符的列表:
Escape Character | How it formats |
---|---|
\ | Backslash |
" | Double Quote |
\n | Line Break |
\t | Tab (horizontal indentation) |
让我们使用逃避字符将引文标记添加到上面的引文标记示例中,但这次我们将使用双引文来表示字符串:
1fmt.Println("Sammy says, \"Hello!\"")
1[secondary_label Output]
2Sammy says, "Hello!"
通过使用逃避字符\
我们可以使用双引文来封锁包含双引文之间引用的文本的字符串。
我们可以使用\n
逃跑字符打破线条,而不打入或返回键:
1fmt.Println("This string\nspans multiple\nlines.")
1[secondary_label Output]
2This string
3spans multiple
4lines.
让我们打印一个多行字符串,并为分段列表添加标签间隔,例如:
1fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")
1[secondary_label Output]
21. Shark
32. Shrimp
410. Squid
与\t
逃跑字符提供的水平插头确保了上一个示例中的第二列内的对齐,使输出对人类来说极易读取。
使用 Escape 字符将额外的格式化添加到可能很难或不可能实现的字符串中,如果没有 Escape 字符,您将无法构建字符串,Sammy 说,
我喜欢使用 fmt
包`。
多条线路
打印多个行上的字符串可以使文本更易于阅读,使用多个行,可以将字符串组成清洁和有序的文本,格式化为一个字母,或用来维持诗歌或歌曲的字符串。
要创建跨多个行的字符串,返回引文被用来封闭字符串. 请记住,虽然这将保留字符串返回,但它也创建了一个原始
字符串。
1`
2This string is on
3multiple lines
4within three single
5quotes on either side.
6`
你会注意到,如果你打印这个,有引领和追溯返回:
1[secondary_label Output]
2
3This string is on
4multiple lines
5within three single
6quotes on either side.
为了避免这种情况,你需要把第一行立即放在后面的报价之后,最后一行用后面的报价结束。
1`This string is on
2multiple lines
3within three single
4quotes on either side.`
如果您需要创建解读字符串的字符串,则可以使用双引文和+
运算符进行创建,但您需要插入自己的线条断。
1"This string is on\n" +
2"multiple lines\n" +
3"within three single\n" +
4"quotes on either side."
虽然返回引文可以更容易打印和阅读长文本,但如果您需要解读字符串,则需要使用双引文。
关键词: Raw String Literals
例如,我们可能需要比较或评估使用反射的计算机代码的字符串,所以我们不希望 Go 将其用作逃跑字符。
一个 ** raw** 字母字符串告诉 Go 忽略一个字符串内的所有格式化,包括逃避字符。
我们通过在字符串周围使用回报来创建一个原始字符串:
1fmt.Println(`Sammy says,\"The balloon\'s color is red.\"`)
1[secondary_label Output]
2Sammy says,\"The balloon\'s color is red.\"
通过在给定字符串周围使用回归引文来构建原始字符串,我们可以保留作为逃跑字符的回归字符和其他字符。
结论
本教程通过使用逃避字符或原始字符串等技术,我们能够确保我们的程序的字符串在屏幕上正确渲染,以便最终用户能够轻松阅读所有输出文本。