只需运行打印 16。更改字符串的内容不会影响结果。fmt.Println(unsafe.Sizeof(""))有人可以解释这个数字(16)是如何来的吗?
1 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
Go 中的字符串由反射表示。StringHeader
包含指向实际字符串数据的指针和字符串长度:
type StringHeader struct { Data uintptr Len int }
unsafe.Sizeof(s)
将仅返回结构的大小,而不返回指向数据本身。因此(在您的示例中),它将是8个字节的总和,使其成为16个字节的8个字节。StringHeader
Data
Len
- 1 回答
- 0 关注
- 134 浏览
添加回答
举报
0/150
提交
取消