S M*_*lin 0 struct go getter-setter
我有一个将用go编写的项目,它将在结构中有超过30个字段,需要在允许设置值之前进行验证.
在python中,我可能会使用描述符或至少属性来防止尽可能多的锅炉板.
我的问题是,通常最好的方法是什么?是否只是在结构中包含小写变量并且为每个属性获取和设置函数或者是否有更好的方法来防止锅炉板代码?
从go docs:
Go不为getter和setter提供自动支持.自己提供getter和setter并没有什么不妥,这通常是合适的,但是将Get放入getter的名字既不是惯用的也不是必需的.如果您有一个名为owner(小写,未导出)的字段,则getter方法应该称为Owner(大写,导出),而不是GetOwner.使用大写名称进行导出提供了将字段与方法区分开的钩子.如果需要,setter函数可能会被称为SetOwner.这两个名字在实践中都很好读:
Run Code Online (Sandbox Code Playgroud)owner := obj.Owner() if owner != user { obj.SetOwner(user) }