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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

更改函數(shù)中的結(jié)構(gòu)字段或返回值

更改函數(shù)中的結(jié)構(gòu)字段或返回值

Go
汪汪一只貓 2023-04-10 10:28:59
最后,這個(gè)問題肯定要看個(gè)人喜好了。盡管如此,我還是想大膽嘗試找出哪種風(fēng)格是首選。我最近注意到我的代碼中存在不一致之處。我有一個(gè)包含一些字段的結(jié)構(gòu)?,F(xiàn)在的問題是當(dāng)我需要調(diào)用一個(gè)函數(shù)來獲取我想要設(shè)置的值時(shí),編輯這個(gè)字段的慣用方法是什么。我是在函數(shù)內(nèi)部設(shè)置值,還是返回它并在我的調(diào)用函數(shù)中設(shè)置它?type SuperStruct struct {    OneValue     string    AnotherValue string}func (s *SuperStruct) makeAnotherValue() {    s.AnotherValue = "Hello there"}func main() {    superStruct := SuperStruct{}    superStruct.makeAnotherValue()}或(具有相同的結(jié)構(gòu))func (s *SuperStruct) makeAnotherValue() string {    return "Hello there"}func main() {    superStruct := SuperStruct{}    superStruct.AnotherValue = superStruct.makeAnotherValue()}我知道在某些情況下,這些方法中只有一種是有意義的。但我經(jīng)常發(fā)現(xiàn)自己處于兩者皆有可能的境地。我想第二種方式可以提供更好的保護(hù),但有時(shí)這不是問題。
查看完整描述

1 回答

?
泛舟湖上清波郎朗

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

我認(rèn)為慣用的方法是完全刪除您的功能:


func main() {

    superStruct := SuperStruct{AnotherValue:"Hello there"}

}

或者


func main() {

    superStruct := SuperStruct{}

    ...

    superStruct.AnotherValue = "Hello there"

}

除非絕對(duì)必要,否則不要構(gòu)建 getters/setters/create 函數(shù),只做需要的工作。如果你只是設(shè)置一個(gè)簡單的字段,在大多數(shù)情況下你不需要工廠來制作字段值。如果您認(rèn)為該函數(shù)是必要的,它需要比這復(fù)雜得多(至少幾行)并且通常被稱為 NewAnotherValue 并且不附加到父結(jié)構(gòu)。


通過另一個(gè)函數(shù)/結(jié)構(gòu)的每個(gè)間接訪問都會(huì)使代碼更難理解。


查看完整回答
反對(duì) 回復(fù) 2023-04-10
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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