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

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

Golang 結(jié)構(gòu)繼承沒有按預(yù)期工作?

Golang 結(jié)構(gòu)繼承沒有按預(yù)期工作?

Go
繁星點點滴滴 2021-12-06 19:39:33
當(dāng)聲明一個繼承自不同結(jié)構(gòu)的結(jié)構(gòu)時:type Base struct {    a string    b string}type Something struct {    Base    c string}然后調(diào)用為繼承值指定值的函數(shù)會產(chǎn)生編譯錯誤:f(Something{    a: "letter a",    c: "letter c",})錯誤信息是:unknown Something field 'a' in struct literal。這對我來說似乎很奇怪。這真的是預(yù)期的功能嗎?謝謝您的幫助!
查看完整描述

3 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗 獲得超5個贊

Golang 沒有提供典型的繼承概念。你在這里完成的是嵌入。

它不給外部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)的字段,而是允許外部結(jié)構(gòu)訪問內(nèi)部結(jié)構(gòu)的字段。

為了創(chuàng)建外部結(jié)構(gòu),Something您需要提供包含內(nèi)部結(jié)構(gòu)的字段Base

在你的情況下:

Something{Base: Base{a: "letter a"}, c: "letter c"}


查看完整回答
反對 回復(fù) 2021-12-06
?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊

您需要像這樣顯式創(chuàng)建 Base 字段


f(Something{

    Base: Base{a: "letter a"},

    c:    "letter c",

})

Go 沒有繼承,它只是組合。


查看完整回答
反對 回復(fù) 2021-12-06
?
喵喵時光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗 獲得超7個贊

您還必須實際實例化嵌入的結(jié)構(gòu)。只是為了讓您知道這在技術(shù)上不是繼承,Go 中不存在這樣的功能。這叫做嵌入。它只是將字段和方法從嵌入類型提升到嵌入范圍。所以無論如何,您嘗試執(zhí)行的復(fù)合文字實例化看起來像這樣;


f(Something{

    Base: Base{a: "a", b: "b"},

    c:    "c",

})


查看完整回答
反對 回復(fù) 2021-12-06
  • 3 回答
  • 0 關(guān)注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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