GO命名规范
Go中命名规范主要分为两种:
- 标识符: 函数名, 常量, 变量等
- 其他: 模块, 文件
标识符命名为应当严格遵行规范, 因为会影响到标识符的作为域.
非标识符命名在无强规范, 但有一些指导规范和常用习俗, 沿用此类方式可增强程序的鲁棒性, 避免出现兼容问题.
项 | 分类 | 规则 | 规范 | 样例 | 规范强度 | 参考 |
---|---|---|---|---|---|---|
文件名 | 非标识符 | 全小写,.标点_下划线开头会被忽略,_test结尾会被认为是测试文件 | 全小写,尽可能简短,必要时使用_下划线分隔. | main.go;config.go;http_get.go;userxxxx_model.go | 弱 | https://medium.com/@kdnotes/golang-naming-rules-and-conventions-8efeecd23b68;https://github.com/golang/go/issues/36060 |
包名 | 非标识符 | 全小写 | 全小写;尽可能简短;尽可能不使用分隔符或下划线 | Util;dateparse;jsonparser;useragent;fastconv | 弱 | https://pkg.go.dev/ |
函数名 | 标识符 | 大写开头作用域为整个程序;小写开头作用域为包内. | 外部调用: 大驼峰;仅内部使用: 小驼峰 | 内:getFullPath: writeDB;外:GetFullPath WriteDB;DBWriter | 强 | https://go.dev/doc/effective_go#mixed-caps |
常量 | 标识符 | 大写开头作用域为整个程序;小写开头作用域为包内. | 外部调用: 大驼峰;仅内部使用: 小驼峰 | 内: dbName;username;myURL;外:UserName;UserID;MyURL | 强 | |
变量 | 标识符 | 大写开头作用域为整个程序;小写开头作用域为包内. | 外部调用: 大驼峰;仅内部使用: 小驼峰 | 内: dbName;username;myURL;外:UserName;UserID;MyURL | 强 |