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语言的设计哲学

简单。