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

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

Susan Sarandon
Susan Sarandon原創
2024-12-24 05:29:18202瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn