- 函数应该按照粗略的调用顺序排序
- 一个文件中的函数应该按照接收器分组
因此,导出的函数应该先出现在一个文件中,struct
, const
, var定义之后。
类型定义之后,可能会出现一个newXYZ()
/NewXYZ()函数,但是
在接收器的其他方法之前。
由于函数是按接收器分组的,普通工具函数应该出现在文件的末尾。
Bad
func (s *something) Cost() {
return calcCost(s.weights)
}
type something struct{ ... }
func calcCost(n []int) int {...}
//此方法应该根据接收器分组
func (s *something) Stop() {...}
//newXX 函数出现在了文件的末尾,应该紧跟着类型定义
func newSomething() *something {
return &something{}
}
Good
type something struct{ ... }
// newXX函数直接跟在类型定义之后
func newSomething() *something {
return &something{}
}
//Cost()和Stop()方法按照接收器分组
func (s *something) Cost() {
return calcCost(s.weights)
}
func (s *something) Stop() {...}
//其他功能函数,处于文件末尾
func calcCost(n []int) int {...}