go 实例化的疑问

发布于 2022-09-11 19:14:10 字数 294 浏览 26 评论 0

//取地址实例化是最广泛的一种结构体实例化方式
go 结构体实例化

(1)基本实例化
type Point struct{

    X int,
    Y int

}
var p Point
p.X=1
p.Y=2

(2)指针类型结构体
ins := new(T)

(3)取结构体地址实例化
ins := &T{}

go 实例化结构体有多种方式,不同方式有什么不一样?
什么情况下该用哪种呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薄凉少年不暖心 2022-09-18 19:14:10

第1中方式得到的是值对象
第2和3是等价的,都是指针对象
至于应该使用哪种方式要看具体场景
如果需要修改其中的值,就要使用指针接收者;比如

func (p *Point) SetX(i int) {
    p.X = i
}
p := new(Point) // 或者&Point{3, 4}
p.SetX(1)
格子衫的從容 2022-09-18 19:14:10

这个本质上是什么情况下使用指针的问题
每个人出发点都不一样,我一般只有 struct 类型会使用指针,其他类型(基本类型,map,slice)使用值传递

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文