string 的内部实现
1.string 源码
- 打开 Goland IDE ,双击 shift 搜索 stringstruct。
- string 的本质是个结构体。
type stringStruct struct {
str unsafe.Pointer //指向 Byte 数组的指针
len int //表示底层 Byte 数组的长度
}
2.字符集
- Go 语言所有的字符均使用 Unicode 字符集,它能表示 144679 个字符。
- 想要表示这 14 万个字符,至少需要 3 个字节表示,一个字节能表示 256 种。
- 英文字母、符号排在前面 128 位,需要 7bit 就可以表示,那么依然用 3 个字节表示,显然浪费,所以用 UTF-8 进行编码,字母用 1 个字节表示,汉字用 3 个字节表示,是可变长编码。
3.string 的使用
- fori 循环打印的是字节数,foreach 循环可以自动将 3 个字节转换成一个汉字输出。
- 字符串的切分,取字符串的前 3 个字符
s = string([]rune(s)[:3]) // 转成字符数组在进行切片