可以使用构造函数来初始化 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中文网其他相关文章!