Go - 字符串

结构

字符串是一个相当基础的类型,在 Go 中,每一个字符串都用 StringHeader 表示。其中 Data 是指向字节数组的指针,Len 则是数组的大小:

1
2
3
4
type StringHeader struct {
	Data uintptr
	Len  int
}

与切片的结构相比,字符串只少了一个 Cap 字段,因此我们经常会说字符串是一个只读的切片类型。

类型转换

在解析或是序列化数据,读取远程接口响应等操作时,经常需要将数据在 string 和 []byte 之间转换。但类型转换的开销并没有想象中的那么小。

由于 string 是只读的,而 []byte 的内容是可读写的,因此无论是谁向谁进行转换,一定会发生内存拷贝,内存拷贝的性能损耗会随着字符串和 []byte 的长度增长而增长

Licensed under CC BY-NC-SA 4.0
最后更新于 Mar 06, 2022 00:00 UTC