添加3种方法或通用方法

时间:2018-12-21 18:01:38

标签: go struct

更好的是,有3种方法可以获取不同的属性:

func (s *Something) GetSections() {
  var sections []Section
  // code to get sections and append to sections
}

func (s *Something) GetValues() {
  var values []Value
  // code to get values and append to values
}

func (s *Something) GetKeys() {
  var keys []Key
  // code to get keys and append to keys
}

或一种接收应得到的信息的方法:

func (s *Something) GetProperties(propertyName string) {
  // code to get the desire property.
}

我在这里谈论的最佳实践涉及创建一种方法来访问结构的内部数据。

我不确定这是否是基于意见的问题,如果可以,我很乐意将其删除。

1 个答案:

答案 0 :(得分:3)

使用第二个属性的唯一原因是,如果仅在运行时知道该属性。然后就有一个合理的理由来解析名称并根据名称选择值。

但是,由于您建议第一个选项是一个选项,因此选择该选项。它防止您在不必要的地方使用条件逻辑。否则,您必须严格处理propertyName不是有效选项的情况;在不应该存在的地方引入可能的错误。

并且如注释中所建议,吸气剂的idiomatic名称不含Get。因此,Sections()而不是GetSections()