Go编程规范 - Golang学习笔记

Go编程规范

可以用的工具

gofmt:代码修正

goimports:修正import包规范

golint:检测规范 https://github.com/golang/lint (官方已停止支持)

Staticcheck:也是一个代码检测工具 https://staticcheck.io/

1. Comment Sentences

注释应该是一个完整的句子,有利于转化godoc

2. Declaring Empty Slices

var t []string

可避免内存分配

3. Doc Comments

包注释建议C注释风格(/* */),public函数都应该有注释

4. Don’t Panic

尽量不要使用panic处理错误

5. Error Strings

错误提示不需要开头大写也不需要句号结尾

6. Handle Errors

不要将error赋值给匿名变量_,一定要处理error

7. Imports

import多个包时应该分组,标准库放在第一组

8. Indent Error Flow

减少正常逻辑代码的缩进

if err != nil {
    // error handling
    return // or continue, etc.
}
// normal code

9. Initialisms

保持首字母大写和缩写的风格,不要混用

appleIDappleId

10. Line Length

一行别太长

11. Mixed Caps

驼峰式命名,public大写开头,private小写开头

12. Named Result Parameters

给返回值命名

13. Package Names

全小写,要简短

14. Pass Values

除非时庞大的结构体不然别传指针

15. Receiver Names

结构体函数中接受者命名使用简短的命名风格

Client -> ccl

16. Receiver Type

如果不清楚就选指针

建议指针的情况:
  • 当函数内部需要修改接受者
  • 当接受者是一个结构体,且包含了sync.Mutex或者类似的用于同步的成员(避免拷贝)
  • 当接受者类型是一个结构体或数组并且很庞大(提高性能)
  • 当接受者是结构体,数组或slice,并且其中的元素是指针,函数内部可能修改这些元素时
不用指针的情况:
  • map,chan,func 本身就是引用类型
  • slice 函数内部不会对slice进行切片或者重新分配空间
  • 小型结构体,小数组,并且不需要修改里面的元素

17. Variable Names

变量命名尽可能短,尤其是局部变量

一些特殊的变量以及全局变量,可能需要更多描述,使用长命名也行

代码检查工具Staticcheck使用方法:

安装:

go get honnef.co/go/tools/cmd/staticcheck

检查当前package:

staticcheck .

检查所有package:

staticcheck ./...

check查询:

staticcheck -explain <check>
相关阅读:
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值