一、golang之string基本特性
1.string是所有 8位字节 字符串 的集合,通常但不一定代表UTF-8 编码 的文本
2.字符串可能为空,但是不能为 nil
3.字符串类型的值是不可变的
二、string之底层结构
type stringStruct struct {
str unsafe.Pointer // 指向一个 [len]byte 的数组
len int //字符串长度
}
可以看到str其实是个指针,指向某个数组的首地址,另一个字段是len长度。
三、字符串连接
1.+
2.strings.Join
3.fmt.Sprintf
4. bytes .Buffer
5.strings.Builder (go1.10+)
四、字符串处理的相关标准库
1.strings,字符串基本操作封装,但是缺少startswith,endswitch,substring之类的方法
2.strconv,字符串转换相关
五、字符串输出格式化
六、字符串遍历
1.常规遍历,for+索引方式,该方式按照字节遍历,可能会存在乱码,遍历的是ascii字符
2.for-range遍历,按字符遍历,不会存在乱码,遍历unicode字符
七、字符串长度求值
1、如果全是ascii,可以直接使用len方法
2.如果包含汉字,需要转成[]rune,再使用len方法
3.如果包含汉字,也可以使用utf8.RuneCountInString计算