首页 >后端开发 >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