程序开发 · 2023年9月17日

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

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

来源:stackoverflow
2024-04-22 16:24:32
0浏览
收藏

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

问题内容

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

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

解决方案

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

type StringHeader struct {
        Data uintptr
        Len  int
}

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

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