首頁 > 後端開發 > Golang > 如何在沒有傳統構造函數的情況下初始化 Go 結構體?

如何在沒有傳統構造函數的情況下初始化 Go 結構體?

Susan Sarandon
發布: 2024-12-24 05:29:18
原創
240 人瀏覽過

How Can I Initialize Go Structs Without Traditional Constructors?

可以使用建構子初始化 Go 結構體嗎?

在 Go 中,可以透過各種方法使用合理的預設值來初始化結構體。儘管由於 Go 的非 OOP 性質而缺乏傳統的構造函數,但仍有替代技術可以實現類似的功能。

方法1:帶指標傳回的NewThing 函數

當零值是不合適的,一種選擇是建立一個「NewThing」函數,該函數會傳回指向新初始化的指標struct:

type Thing struct {
    Name  string
    Num   int
}

func NewThing(someParameter string) *Thing {
    p := new(Thing)
    p.Name = someParameter
    p.Num = 33 // Set a sensible default value
    return p
}
登入後複製

方法2:壓縮「NewThing」函數

對於較簡單的結構,可以使用較簡潔的方法:

func NewThing(someParameter string) *Thing {
    return &Thing{someParameter, 33}
}
登入後複製

方法3:帶有值的“makeThing”函數返回

如果不需要返回指針,則函數可以命名為“makeThing”並返回一個值:

func makeThing(name string) Thing {
    return Thing{name, 33}
}
登入後複製

參考

更多詳細信息,請參閱Effective Go中的「Allocation with new」部分。

以上是如何在沒有傳統構造函數的情況下初始化 Go 結構體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板