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

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

Golang struct 構(gòu)造的一般性

Golang struct 構(gòu)造的一般性

Go
www說 2021-09-27 21:25:21
我有一個其他兩個對象實現(xiàn)的結(jié)構(gòu)。在這種情況下,typeA 和 B 回購。有一些初始化代碼,這里用省略號表示。初始化代碼在兩個構(gòu)造函數(shù)之間完全重復(fù),雖然我只有兩個dbRepo,但這沒什么大不了的,但是當(dāng)我創(chuàng)建更多時,我會更加擔(dān)心這種不好的做法。有沒有辦法用接口來概括這一點?type dbRepo struct {    foo string    bar string}type typeARepo dbRepotype typeBRepo dbRepofunc newTypeARepo(foo, bar string) {    ...}func newTypeBRepo(foo, bar string) {    ...}
查看完整描述

3 回答

?
肥皂起泡泡

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

我個人在 Go 中觀察到的實踐(這也是有效 Go 或 Go 入門教程中推薦的)只是定義一個NewdbRepo函數(shù)并將其用于所有實例化。它的實現(xiàn)看起來像;


func NewdbRepo(f, b string) *dbRepo {

    return &dbRepo{ foo:f, bar:b}

}

您實際上無法像在大多數(shù)類似 C 的語言中那樣定義構(gòu)造函數(shù),因此您只需要提供一個包范圍的方法來為您進(jìn)行構(gòu)造。此外,如果您不使用復(fù)合文字(我在 NewdbRepo 實現(xiàn)中使用的初始化樣式),那么您可能會發(fā)現(xiàn)僅憑這一點就足以滿足您的需要。


查看完整回答
反對 回復(fù) 2021-09-27
?
手掌心

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

您可以使用初始化代碼編寫一個函數(shù):


func newDbRepo(foo, bar string) dbRepo {

        // ...

}

然后你可以將它與類型轉(zhuǎn)換一起使用:


a := typeARepo(newDbRepo("foo", "bar"))

b := typeBRepo(newDbRepo("foo", "bar"))


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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