官方答疑:
Getters
Go doesn’t provide automatic support for getters and setters. There’s nothing wrong with providing getters and setters yourself, and it’s often appropriate to do so, but it’s neither idiomatic nor necessary to put Get into the getter’s name. If you have a field called owner (lower case, unexported), the getter method should be called Owner (upper case, exported), not GetOwner. The use of upper-case names for export provides the hook to discriminate the field from the method. A setter function, if needed, will likely be called SetOwner. Both names read well in practice:
Go 不为 getter 和 setter 提供自动支持。自己提供 getter 和 setter 并没有错,这样做通常是合适的,但将 Get 放入 getter 的名称既不是惯用语,也没有必要。如果您有一个名为 owner 的字段(小写,未导出),则 getter 方法应称为 Owner(大写,导出),而不是 GetOwner。使用大写名称进行导出提供了将字段与方法区分开来的钩子。如果需要,一个 setter 函数可能会被称为 SetOwner。这两个名字在实践中读起来都很好:
owner := obj.Owner()
if owner != user {
obj.SetOwner(user)
}
参考连接: