第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go:比較匿名結構

Go:比較匿名結構

泛舟湖上清波郎朗 2022-01-04 20:59:23
我不明白如何go比較匿名結構。我試圖理解這段代碼:package mainimport (    "fmt")type foo struct {    bar string}func main() {    var x struct {        bar string    }    var y foo    fmt.Println(x == y) // this prints true    equals(x, y) // this prints false}func equals(a, b interface{}) {    fmt.Println(a == b)}為什么會x == y產(chǎn)生收益true?它們具有不同的類型,因此我希望它們無法進行比較。而且,既然它們是平等的,為什么將它們強制轉換為interface{}使它們不平等?
查看完整描述

2 回答

?
眼眸繁星

TA貢獻1873條經(jīng)驗 獲得超9個贊

為什么 x == y 為真?

Go 語言規(guī)范

如果所有字段都具有可比性,則結構值具有可比性。如果它們對應的非空白字段相等,則兩個結構值相等。

a 的零值string"",所以x.bary.bar相等,因此xy相等。


為什么將它們轉換為 interface{} 會使它們不平等?

同樣,來自語言規(guī)范的同一頁面:

接口值具有可比性。如果兩個接口值具有相同的動態(tài)類型和相等的動態(tài)值,或者兩者的值為 nil,則它們相等。


查看完整回答
反對 回復 2022-01-04
?
繁星coding

TA貢獻1797條經(jīng)驗 獲得超4個贊

它們具有不同的類型但具有可比性,因為結構具有相同的字段名稱/類型。如果您嘗試重命名該字段,它將無法編譯。

它們與 interface{} 值相當,但它們的動態(tài)類型不同 - 您可以使用 fmt%T動詞檢查這一點

http://play.golang.org/p/x0w30RIb5a


查看完整回答
反對 回復 2022-01-04
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號