Uber Go 语言编程规范:函数的分组与顺序

  • 函数应该按照粗略的调用顺序排序
  • 一个文件中的函数应该按照接收器分组

因此,导出的函数应该先出现在一个文件中,structconstvar定义之后。

类型定义之后,可能会出现一个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 {...}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamCatcher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值