【发布时间】:2021-02-01 08:20:17
【问题描述】:
我创建了如下界面:
type cloneable interface {
clone() cloneable
}
还有一个person 结构(实现cloneable):
type person struct {
firstName string
lastName string
age int
}
func (p person) clone() person {
return person{p.firstName, p.lastName, p.age}
}
现在我尝试像这样克隆我的个人价值:
p1 := person{"name", "last", 22}
p2 := p1.clone()
fmt.Println(p2 == p1) // PRINTS 'true', why?
clone 方法按预期工作,但为什么 p2 等于 p1?这两个都是值,不是引用,怎么可能相等?
【问题讨论】:
-
如您所说,
p1和p2都是值。为什么您期望通过比较来检查对象的内存地址?您可以使用&来做到这一点。 -
Go 中没有引用。
标签: go reference pass-by-value