overusing-getters-and-setters
Overusing getters and setters
说起getters 和setters我个人感觉在java中十分常见,由于java是纯面向对象语言,所以经常会将某些字段定义为private然后使用getter 和setter进行操作该priavte字段。但是在Go语言中我在很多源码中并没有看到getter和setter,而是直接操作struct中的字段。除非该字段被设置为当前包可见。
首先说明:
Go不强制使用getter和setter,在标准库中也不强制使用。但是getter和setter具有一些优点:
- 封装了字段的设置与获取行为,允许在获取或者设置过程中添加新的行为(验证字段,返回计算值等)
- 隐藏了内部表示
在Go语言如何使用getter和setter呢?
如果我们要为balance字段设置getter和setter,那么我们的getter方法应该是Balance()而不是GetBalance()。
而setter应该命名为SetBalance。
如果我们的getter和setter就只是简单的取值,赋值,那么没有必要为该字段设置getter和setter。
只有当我们的getter和setter方法有有意义时才使用,遵循go语言的设计哲学
简单。