为了账号安全,请及时绑定邮箱和手机立即绑定

不安全的。SizeOf() 说任何字符串都需要 16 个字节,但如何做到呢?

不安全的。SizeOf() 说任何字符串都需要 16 个字节,但如何做到呢?

Go
潇潇雨雨 2022-08-01 18:37:01
只需运行打印 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个字节。StringHeaderDataLen


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信