字符串由字节组成。 字符串文字由 UTF-8 代码点(字符)组成。
我发现这两种说法非常令人困惑。还有字节和代码点之间有什么区别。为什么 Golang 中的字符串会分解为符文。
一个字节是 8 位的集合,您可以通过多种方式“解释”它。其中一种方法是使用 0-255 范围内的整数。 代码点
整数,它们本身需要用内存中的字节来表示。一种直接的方法是使用 UTF-32,它仅使用 32 位字来表示整数。另一种更常见的方法是使用 UTF-8,它使用 1 到 4 个字节来表示整数。 字符串文字本身是表示一系列代码点的语法结构。当存储在包含 Go 源代码的文件中时,这些单独的代码点以字节形式存储。
“Rune”只是 32 位值的 Go 特定别名(请参阅
)。
需要注意的是,如果 Golang 中的字符串是不可变的,则任何需要更改字符串的操作都会创建一个经过所需修改的新字符串。原字符串没有改变