可以使用建構子初始化 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中文網其他相關文章!