结构
字符串是一个相当基础的类型,在 Go 中,每一个字符串都用 StringHeader 表示。其中 Data 是指向字节数组的指针,Len 则是数组的大小:
|
|
与切片的结构相比,字符串只少了一个 Cap 字段,因此我们经常会说字符串是一个只读的切片类型。
类型转换
在解析或是序列化数据,读取远程接口响应等操作时,经常需要将数据在 string 和 []byte 之间转换。但类型转换的开销并没有想象中的那么小。
由于 string 是只读的,而 []byte 的内容是可读写的,因此无论是谁向谁进行转换,一定会发生内存拷贝,内存拷贝的性能损耗会随着字符串和 []byte 的长度增长而增长