函数的分组与顺序

一、基本准则

在同一文件中,需要按照以下顺序安排结构: 1. const 2. var 3. struct 4. 导出函数 5. 非导出函数

如果导出函数有接收者,那么对于接收者类型,可能会有一个创建接收者对象的函数,应将该函数放于接收者类型定义之后,接收者函数之前。考虑以下代码:

func (s *something) Cost() {
  return calcCost(s.weights)
}

type something struct{ ... }

func calcCost(n []int) int {...}

func (s *something) Stop() {...}

func newSomething() *something {
    return &something{}
}

这一段代码没有遵守规定,显得十分混乱,应做出以下改进:

type something struct{ ... }

func newSomething() *something {
    return &something{}
}

func (s *something) Cost() {
  return calcCost(s.weights)
}

func (s *something) Stop() {...}

func calcCost(n []int) int {...}

二、接收者方法

尽管golang不是一门面向对象语言,但是在接收者方法中,略微能感受到面向对象的思想。所以在使用接收者方法时,尽量不要在同一个文件中定义多种接收者,这样可以简化go文件命名。

Last updated

Was this helpful?