我創(chuàng)建了以下界面:type cloneable interface { clone() cloneable}和一個person結(jié)構(gòu)(實(shí)現(xiàn)cloneable):type person struct { firstName string lastName string age int}func (p person) clone() person { return person{p.firstName, p.lastName, p.age}}現(xiàn)在我嘗試像這樣克隆我的人的價值:p1 := person{"name", "last", 22}p2 := p1.clone()fmt.Println(p2 == p1) // PRINTS 'true', why?克隆方法按預(yù)期工作,但為什么 p2 等于 p1?這些都是值,而不是引用,它們怎么可能相等?
2 回答

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個贊
comparable
如果首先,兩個結(jié)構(gòu)體的所有字段類型都是并且所有對應(yīng)的字段值都是,則兩個結(jié)構(gòu)將是相等的equal
。
如果你的結(jié)構(gòu)至少有一個function
或一個不可比較的值,那么你不能比較兩個結(jié)構(gòu)

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個贊
來自The Go Programming Language Specification
:
相等運(yùn)算符==和!=適用于可比較的操作數(shù)。...這些術(shù)語和比較結(jié)果定義如下:????
- 2 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報
0/150
提交
取消