//取地址实例化是最广泛的一种结构体实例化方式
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 实例化结构体有多种方式,不同方式有什么不一样?
什么情况下该用哪种呢?
第1中方式得到的是值对象
第2和3是等价的,都是指针对象
至于应该使用哪种方式要看具体场景
如果需要修改其中的值,就要使用指针接收者;比如
func (p *Point) SetX(i int) {
p.X = i
}
p := new(Point) // 或者&Point{3, 4}
p.SetX(1)
5 回答5.5k 阅读✓ 已解决
6 回答2.7k 阅读
2 回答3.2k 阅读✓ 已解决
1 回答5.3k 阅读✓ 已解决
2 回答3.1k 阅读✓ 已解决
1 回答5.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
这个本质上是
什么情况下使用指针的问题
每个人出发点都不一样,我一般只有 struct 类型会使用指针,其他类型(基本类型,map,slice)使用值传递