包命名
- 包名用纯小写字母命名,尽可能精简
文件
- 文件名采用小写字母加下划线
访问权限
- 公开可访问,首字母全大写
- 不公开,只在本包内访问,首字母小写
函数&变量
func GetUserList() { // 所有包都公开访问
}
func getUserList() {// 本包内可访问,其他包不可访问
}
变量访问规则和函数一致
name := "guohu"
多个两边也可以用 var 加括号一起声明
var (
Name string// 其他包,也可以访问
age int// 其他包不可访问,年龄不能暴露
)
结构
- 结构体名称,每个单词(名词)首字母大写
- 结构体中的属性,属性名为大驼峰形式,如果属性名首字母小写,无法访问,json中无法正常解析
type User struct{
Name string `json:"name"` // 可访问
mobile string `json:"mobile"`// 不可访问,不可解析
}
注意点:
开发中json字符串key的首字母一般都是小写的,这个时候结构的属性需要被访问,首字母就要大写
所以打个 tag(`json:"name"`) 进行转换,把json字符串中的name,反序列化到结构中的Name属性
接口
- 一般用er结尾,接口的实现不需要er
type Searcher interface {
Search()
}
常量
- 常量用纯大写字母+下划线组合
- 根据项目分层情况,建议单独创建一个包(data)存放常量
const ERROR = "500"
多个常量可以用 const 加括号一起声明
例:
const (
SUCCESS = "1"
INVALID_PARAMS = "400"
)
测试文件
- 测试文件以_test.go 结尾