如何在 Go 结构中设置默认值

新手上路,请多包涵

以下问题有多种答案/技术:

  1. 如何为 golang 结构设置默认值?
  2. 如何在golang中初始化结构

我有几个答案,但需要进一步讨论。

原文由 Prateek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答
  1. 强制一个方法来获取结构(构造函数方式)。

来自 这篇文章

一个好的设计是让你的类型不被导出,但提供一个导出的构造函数,比如 NewMyType() 你可以在其中正确地初始化你的结构/类型。还返回一个接口类型而不是具体类型,接口应该包含其他人想用你的值做的一切。当然,您的具体类型必须实现该接口。

这可以通过简单地使类型本身不被导出来完成。您可以导出函数 NewSomething 甚至字段 Text 和 DefaultText,但不要导出结构类型 something。

  1. 另一种为您自己的模块自定义它的方法是使用 Config 结构来设置默认值(链接中的选项 5)。虽然不是一个好方法。

原文由 Prateek 发布,翻译遵循 CC BY-SA 4.0 许可协议

一种可能的想法是编写单独的构造函数

//Something is the structure we work with
type Something struct {
     Text string
     DefaultText string
}
// NewSomething create new instance of Something
func NewSomething(text string) Something {
   something := Something{}
   something.Text = text
   something.DefaultText = "default text"
   return something
}

原文由 vodolaz095 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏