登录
首页 >  Golang >  Go问答

unsafe.SizeOf() 表示任何字符串都需要 16 个字节,但是如何呢?

来源:stackoverflow

时间:2024-04-22 16:24:32 288浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《unsafe.SizeOf() 表示任何字符串都需要 16 个字节,但是如何呢?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

只需运行 fmt.Println(unsafe.Sizeof("")) 即可打印 16。更改字符串的内容不会影响结果。

有人能解释一下这个数字(16)是怎么来的吗?


解决方案


go 中的字符串由 reflect.StringHeader 表示,其中包含指向实际字符串数据的指针和字符串的长度:

type StringHeader struct {
        Data uintptr
        Len  int
}

unsafe.sizeof(s) 将仅返回 stringheader 结构的大小,而不返回指向的数据本身。因此(在您的示例中)它将是 data 的 8 个字节和 len 的 8 个字节之和,使其成为 16 个字节。

今天关于《unsafe.SizeOf() 表示任何字符串都需要 16 个字节,但是如何呢?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>