提问人:Two Horses 提问时间:10/18/2020 最后编辑:Jonathan HallTwo Horses 更新时间:10/21/2020 访问量:67
为什么克隆的结构值仍然等于原始结构
Why cloned struct value still equals to the original struct
问:
我创建了以下界面:
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?
克隆方法按预期工作,但为什么 p2 等于 p1?这些都是值,而不是参考,它们怎么可能相等?
答:
2赞
ttrasn
10/18/2020
#1
如果首先,两个结构将相等,它们的所有字段类型都是,并且所有相应的字段值都是 。comparable
equal
如果你的结构至少有一个或一个不可比较的值,那么你就不能比较两个结构function
0赞
kozmo
10/20/2020
#2
从:The Go Programming Language Specification
相等运算符 == 和 != 适用于可比较的操作数。。这些术语和比较结果定义如下: 👇🏼
评论
p1
p2
&