推荐的方法来做吸气剂和二传手

时间:2018-12-08 16:16:36

标签: go struct getter-setter

我有一个将用go编写的项目,它将在结构中包含30多个字段,在允许设置该值之前,需要对其进行验证。

在python中,我可能会使用描述符或至少使用属性来执行此操作,以防止尽可能多的样板。

我的问题是,进行此操作的最佳方法通常是什么?惯例是在结构中包含小写var并为每个属性具有get和set函数,还是有更好的方法来防止样板代码?

1 个答案:

答案 0 :(得分:6)

来自go docs

  

Go不为getter和setter提供自动支持。自己提供getter和setter并没有错,这样做通常是适当的,但是将Get用作getter的名称既不是惯用的,也没有必要。如果您有一个名为owner(小写,未导出)的字段,则getter方法应称为Owner(大写,导出),而不是GetOwner。使用大写名称进行导出可提供钩子,以将字段与方法区分开。如果需要的话,一个setter函数可能会被称为SetOwner。这两个名字在实践中都读得很好:

owner := obj.Owner()
if owner != user {
    obj.SetOwner(user)
}