当前位置:  开发笔记 > 编程语言 > 正文

访问struct字段时Golang结构文字和指针之间的区别

如何解决《访问struct字段时Golang结构文字和指针之间的区别》经验,为你挑选了1个好方法。

在访问struct字段时,我不理解struct literal和struct指针之间的区别.有没有不同的内部行为?

type Person struct {
    Name string
}

p := &Person{Name: "Alice"}
u := Person{Name: "Bob"}

fmt.Println(p.Name)  // any difference ?
fmt.Println(u.Name)  // any difference ?

我搜索了这个但发帖我发现所有解释了值和指针之间的区别,或者"传递值"与"传递指针"到方法.他们不是我想知道的.



1> Kerrek SB..:

u是一个类型的变量Person.p是"指向Person" 的类型的变量,它使用匿名("临时")对象的地址进行初始化.表达式p.Name使用指针的自动解除引用,相当于(*p).Name.p指向生命的对象只要p指向它,然后可能被Go的非确定性内存管理器破坏.

这两个p.Nameu.Name的类型的表达式string,而他们没有"的指针传递",因为他们的地址不来电的.在这种情况下fmt.Println,该值实际上是使用Go的ad-hoc多态的结构子类型形式"通过接口"传递的.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有