Go 推荐的做getter和setter的方法

Go 推荐的做getter和setter的方法,go,struct,getter-setter,Go,Struct,Getter Setter,我有一个项目,这将是写在围棋,它将有超过30个领域内的结构,将需要验证之前的值是允许设置 在python中,我可能会使用描述符或至少使用属性来实现这一点,以尽可能多地防止出现错误 我的问题是,在围棋中,通常最好的方法是什么?是否只在结构中使用小写VAR并为每个属性使用get和set函数是惯例,还是有更好的方法来防止锅炉板代码?来自: Go不提供对getter和setter的自动支持。自己提供getter和setter并没有什么错,这样做通常是合适的,但将Get放在getter的名字中既不惯用,也

我有一个项目,这将是写在围棋,它将有超过30个领域内的结构,将需要验证之前的值是允许设置

在python中,我可能会使用描述符或至少使用属性来实现这一点,以尽可能多地防止出现错误

我的问题是,在围棋中,通常最好的方法是什么?是否只在结构中使用小写VAR并为每个属性使用get和set函数是惯例,还是有更好的方法来防止锅炉板代码?

来自:

Go不提供对getter和setter的自动支持。自己提供getter和setter并没有什么错,这样做通常是合适的,但将Get放在getter的名字中既不惯用,也没有必要。如果您有一个名为owner(小写,未报告)的字段,那么getter方法应该称为owner(大写,导出),而不是GetOwner。导出时使用大写名称提供了区分字段和方法的钩子。如果需要,setter函数很可能被称为SetOwner。这两个名字实际上都读得很好:

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

Go不提供对getter和setter的自动支持。自己提供getter和setter并没有什么错,这样做通常是合适的,但将Get放在getter的名字中既不惯用,也没有必要。如果您有一个名为owner(小写,未报告)的字段,那么getter方法应该称为owner(大写,导出),而不是GetOwner。导出时使用大写名称提供了区分字段和方法的钩子。如果需要,setter函数很可能被称为SetOwner。这两个名字实际上都读得很好:

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