字符串
概念说明
字符串用于表示一段文本。
在 Go 中,字符串使用双引号或反引号表示,并且字符串是不可变的。
语法/规则
- 双引号字符串会处理转义字符,例如
\n、\t、\"。 - 反引号字符串是原始字符串,内容按原样保留,常用于多行文本。
- 字符串拼接可以使用
+。 len(s)返回的是字节长度,不是字符个数。- 字符串下标可读不可写,不能通过
s[0] = 'x'修改字符串内容。
声明与转义示例
| |
输出结果:
| |
原始字符串与长度示例
| |
输出结果:
| |
说明:
len(s)的单位是字节(byte),不是“字符个数”。1 byte = 8 bit,所以len("你好") == 6的含义是“6 个字节(即 6 个 8 位,共 48 位)”。- Go 字符串默认按 UTF-8 存储,常见中文(如
你、好)通常各占 3 个字节,所以一共是 6 个字节。 - 如果要统计“字符个数”,使用
utf8.RuneCountInString更直观。
可对比理解:
len("A") == 1(英文/ASCII 常见 1 字节)len("你") == 3(中文常见 3 字节)len("😀") == 4(Emoji 常见 4 字节)
常见错误
- 用单引号定义字符串,例如
'hello',会编译报错。 - 误以为
len("你好")返回 2,实际返回的是 UTF-8 字节数 6。 - 试图通过下标直接修改字符串内容,会出现
cannot assign to编译错误。