亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

我們如何將另一個結構內部的結構稱為嵌入式結構?

我們如何將另一個結構內部的結構稱為嵌入式結構?

Go
翻閱古今 2023-01-03 17:12:43
為什么我們不稱 person 字段為embedded?“type user struct { name  string email string} type admin struct { person user  // NOT Embedding level  string}”但在像下面這樣的其他情況下,我們稱之為嵌入式:“type user struct { name  string email string} type admin struct { user  // Value Semantic Embedding level  string}”我認為這person也像值/指針語義嵌入一樣被嵌入。我在這里缺少什么?
查看完整描述

2 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

因為Go 語言規范就是這樣定義它的:

使用類型聲明但沒有顯式字段名稱的字段稱為嵌入字段

我可以看到術語“嵌入式”會如何令人困惑。畢竟,命名和未命名字段最終具有相同的內存布局,“嵌入”到父結構中?!澳涿侄巍笨赡苁且粋€更好的名字,但這不是 Go 語言設計者選擇的名字。


查看完整回答
反對 回復 2023-01-03
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

使用第一段代碼,您不能將admin對象視為user對象,例如使用成員訪問或類型斷言。這也會影響嵌入結構如何滿足interfaces。


例如,以下代碼適用于適當的嵌入,但不適用于簡單的成員結構:


var a admin


a.name = "asdfg"


u := a.(user)


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號