这一期我们谈一谈 Go 语言的 编码规范 。一个统一的代码风格有利于提高代码的可读性、规范性和统一性。首先声明一点,这里的编码规范并不代表官方,只是参考网络上的一些文章以及 Go 语言官方代码风格的制定进行整理。
package
的名字和目录保持一致Windows
平台文件名不区分大小写,所以文件名命名应该统一为小写_test.go
结尾文件名_平台.go
命名,例如 utils_windows.go
和 utils_linux.go
,可用平台有:windows, unix, posix, plan9, darwin, bsd, linux, freebsd, nacl, netbsd, openbsd, solaris, dragonfly, bsd, notbsd, android, stubsmain.go
或者以应用的全小写形式命名APP_VERSION
括号
来组织const (
APP_VERSION = "0.1.0"
CONF_PATH = "/etc/xx.conf"
)
当然网上还有另一种命名风格,那就是使用驼峰命名法,但我个人并不推荐这种命名风格。
user
写为 u
apiClient
APIClient
bool
类型,则名称应以 has
、 is
、 can
或 allow
开头,例如:isExist
、 canManage
struct
声明和初始化格式采用多行// 多行声明
type Person struct {
name string
gender string
age int
}
// 多行初始化
person := Person{
name: "John",
gender: "male",
age: 18,
}
er
作为后缀,例如:Reader
、 Writer
type Reader interface {
Read(p []byte) (n int, err error)
}
函数内部的参数的排列顺序也有几点原则:
package
语句之前,可以是块注释或者行注释。如果一个包中有多个文件,则只需要在一个文件中编写,该文件一般是和包同名的文件// 包的基本简介(包名,简介)
// 创建人: name
// 创建时间: yyyyMMdd
doc.go
文件说明package
前面加一个空行,否则版权注释会作为 package
的注释// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package fmt
每个自定义的结构体或者接口都应该有注释说明,该注释对结构进行简要介绍,放在结构体定义的前一行,格式为:结构体名, 结构体说明
。
同时结构体内的每个成员变量都要有说明,该说明放在成员变量的后面(注意对齐),例如:
// User , 用户对象,定义了用户的基础信息
type User struct{
Username string // 用户名
Email string // 邮箱
}
每个函数或者方法都应该有注释说明,函数、方法和类型的注释说明都是一个完整的句子。
当然还有下面这种注释习惯,该函数注释包括三个方面(严格按照下面的顺序):
// 函数名, 简要说明
// 参数:
// 参数1:参数说明
// 参数2:参数说明
// 返回值:
// 每行一个返回值
TODO
:提醒维护人员此部分代码待完成
FIXME
:提醒维护人员此处有 BUG 待修复
NOTE
:维护人员要关注的一些问题说明
80
个字符bool
类型),则以 <name> returns true if
开头tab
键进行缩进,或者直接使用 gofmt
工具格式化即可120
个字符,超过的请使用换行展示import
一行解决()
来组织err
的调用,不要使用 _
丢弃,必须全部处理err
,或者使用 log
记录下来return
,一旦有错误发生,马上返回panic
,除非你知道你在做什么👇周一至周五更新,期待你的关注👇
联系客服