我有一个结构,我希望用一些合理的默认值对其进行初始化。
通常,这里要做的是使用构造函数,但由于 go 在传统意义上并不是真正的 OOP,因此这些不是真正的对象,并且它没有构造函数。
我注意到了 init 方法,但那是在包级别。还有其他类似的东西可以在结构级别使用吗?
如果不是,那么 Go 中此类事物的公认最佳实践是什么?
实际上有两种公认的最佳实践:
使结构的零值成为合理的默认值。(虽然这对于大多数来自“传统” oop 的人来说看起来很奇怪,但它通常可以工作并且非常方便)。 提供一个函数func New() YourTyp
,或者如果你的包函数中有几个这样的类型func NewYourType1() YourType1
等等。
记录您的类型的零值是否可用(在这种情况下,它必须由其中一个New...
函数设置。(对于“传统主义者”哎呀:不阅读文档的人将无法使用你的类型正确,即使他不能在未定义的状态下创建对象。)
如何让 Go Map 的值类型同时支持 string 和 int 类型?
在Go语言中,并非所有的错误都能通过recover()函数捕获。recover()函数只能捕获panic导致的异常,而普通的错误(即实现了error接口的类型)则需要通过其他方式处理。以下是处理无法通过recover()捕获的错误的一些方法:错误返回值: Go语言中,函数可以返回错误作为返回值之一。调用者应该检查这个错误值,并根据错误进行相应的处理。func doSomething() error { // 执行一些操作 if err != nil { return err
PnR:具有 Go 平台抽象的配置意图驱动的容器编排
Go 工程中包引用路径和代码路径不一致的原因是什么
Go协程执行顺序不确定:同一个代码会输出两种不同结果,为什么?
Golang 框架中如何实现多租户架构?