一、命名规范
1.包名:package
保持package的名字与目录保持一致,尽量采取有意义的包名,简短。包名应为小写单词,不要使用下划线或者混合大小写。
如: package calc
2.文件名
采用有意义的文件名,简短,应为小写,使用下划线分隔各个单词
如: user_model.go
3.结构体命名
采用驼峰命名法,首字母根据访问控制大写或小写
如:struct User struct {
UserName string
}
4.接口命名
规则和结构体命名差不多,单个函数的机构名以“er”作为后缀
如:Reader,Writer
5.变量命名
①一般遵循驼峰命名,首字母根据访问权限设置大写或小写
②存在一些特殊的情况,如:APIClient,UserID
③若变量为bool类型,则名称应以Has,Is,Can,Allow开头
如: var isExist bool
var hasConflict bool
var canManage bool
var allowGitHook bool
6.常量命名
常量均需使用全部大写字母组成,并使用下划线分词
如:const APP_VER = “1.0”
const PI = 3.1415926
7.注释
行注释://
块注释:/*
…
*/
包注释:每个包都应该有一个包注释,包注释应包含下面基本信息(请严格按照这个顺序,简介,创建人,创建时间)
//util包,改包包含了项目共用的一些常量
//创建人: zzy
//创建时间:20211102
函数注释:每个函数都应该注释说明,注释应包含下面基本信息(请严格按照这个顺序,简介,创建人,创建时间)
//add,返回两个值得和
//参数:
a : 值1
b : 值2
//返回值
c
8.注释风格
①统一使用中文注释
②建议全部使用单行注释
③当行注释不宜过长,不超过120个字符
9.包的导入
包分三类:go自带的包,第三方的包(go get 下载的),程序内部包(自己写的包)
如果包引入了三种类型的包,标准库包,程序内部包,第三方包,建议采用如下方式进行组织,不同类型的包直接有空行隔开。
import(
“encoding/json”
“strings”
"myproject/models"
"myproject/controller"
"myproject/utils"
"gihub.com/astaxie/beego"
"github.com/go-sql-driver/mysql"
)
10.错误处理
①不能丢弃任何有返回err的调用,不要使用_丢弃,必须全部处理。接收到错误,要么返回err,要么使用log记录下来
②尽早return:一旦有错误发生,马上返回
③尽量不要使用panic,除非你知道你在做什么
④错误描述如果是英文必须为小写,不需要标点结尾
⑤用独立的错误流进行处理
//错误写法
if err != nil{
//error handling
}else {
//normal code
}
//正确写法
if err != nil {
// error handing
return // or continue
}