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 实例化结构体有多种方式,不同方式有什么不一样?
什么情况下该用哪种呢?

nicce 122
2019-04-18 提问
2 个回答
0

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

0

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

func (p *Point) SetX(i int) {
    p.X = i
}
p := new(Point) // 或者&Point{3, 4}
p.SetX(1)

撰写答案

推广链接