插件窝 干货文章 Go语言字符串是字符数组还是字节数组?

Go语言字符串是字符数组还是字节数组?

字节 字符串 UTF-8 言中 211    来源:    2025-03-16

在Go语言中,字符串本质上是一个不可变的字节数组,而不是字符数组。具体来说,字符串是由一系列字节组成的,这些字节表示的是字符串的UTF-8编码。

关键点:

  1. 字节数组:Go语言中的字符串底层是一个字节数组([]byte),每个字节存储的是字符串的UTF-8编码。
  2. 不可变性:字符串是不可变的,意味着一旦创建,就不能修改其内容。如果需要修改字符串,通常会将其转换为[]byte[]rune进行操作。
  3. UTF-8编码:Go语言中的字符串默认使用UTF-8编码,这意味着一个字符可能由多个字节组成。例如,一个中文字符通常由3个字节表示。

示例:

s := "Hello, 世界"
fmt.Println(len(s)) // 输出13,因为"世界"各占3个字节

总结:

  • Go语言中的字符串是字节数组,存储的是UTF-8编码的字节序列。
  • 如果需要处理单个字符(如中文字符),可以使用rune类型,它表示一个Unicode码点。

希望这个解释能帮助你理解Go语言中字符串的本质!