Go语言 别名和嵌入的内存使用[关闭]

vddsk6oq  于 2023-11-14  发布在  Go
关注(0)|答案(2)|浏览(103)

已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

26天前关闭
Improve this question
别名类型(1)和别名类型(2)之间的内存使用是否存在差异

type String1 string

字符串
和嵌入式(2)

type String2 struct {
    string
}


我认为第二个例子包含两个指针:String2有一个指向string的指针,string有一个指向UTF-8字节的指针。
与示例1相同吗?

wr98u20j

wr98u20j1#

Go语言中的结构体值不是引用,它是一个包含结构体字段的内存块(可能还有由对齐引起的漏洞)。
因此,两种类型的值在内存中看起来应该相同。
很容易验证:https://go.dev/play/p/syrAPVsCWfS

uqcuzwp8

uqcuzwp82#

默认情况下,嵌入不会引入指针。
如果有一个指针,

type String2 struct {
    *string
}

字符串

相关问题