本文讨论了 Go 中的字符串。 起初,字符串对于博客文章来说似乎太简单了,但使用它们不仅需要了解它们的工作原理, 还有Strings, bytes, runes and characters 之间的区别, Unicode 和 UTF-8 之间的区别, 字符串和字符串文字之间的区别, 以及其他更微妙的区别。
处理此主题的一种方法是将其视为对经常问的问题:“当我在位置 n 索引 Go 字符串时,为什么我没有得到第 n 个字符? 如您所见,这个问题将引导我们了解有关文本如何工作的许多细节 在现代世界中。
让我们从一些基础知识开始。
在 Go 中,字符串实际上是字节的只读切片。
重要的是要预先声明字符串包含任意字节。 不需要保存 Unicode 文本、UTF-8 文本或任何其他预定义格式。 就字符串的内容而言,它完全等同于 字节片。
这是一个字符串文字(稍后会详细介绍),它使用符号来定义一个包含一些特殊字节值的字符串常量。 (当然,字节的范围从十六进制值 00 到 FF,包括