一、命名规范
1、小写字母/大写字母/下划线开头,后面可以是数字,字母,下划线
2、不允许在命名的时候使用其他标点符号
3、go语言区分大小写
注意:
1、当命名(常量,变量,类型,函数名,结构字段等)以一个大写字母开头,表示的是公共的,可以被外部的代码所使用(类似面向对象中的public)
2、当命名如果是小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(类似面向对象中的private)
包是一种特殊的文件夹,不仅可以储存文件而且可以显示文件的状态。而文件夹仅仅能够储存文件。
文件可以是文本文档、图片、程序等等。文件通常具有三个字母的文件扩展名,用于指示文件类型(例如,图片文件常常以 JPEG 格式保存并且文件扩展名为 .jpg)。
1)包命名:package
保持package的名字和目录保持一致(不绝对),尽量采取有意义的包名,间断,有意义,尽量和标准库不要冲突,包名应该为小写单词,不要使用下划线或者混合大小写
2)文件命名
尽量采取有意义的文件名,间断,有意义,应该为小写单词,使用下划线分割各个单词
3)结构体命名
结构体采用驼峰命名法,整体的首字母根据访问控制大写或者小写(是否需要被其他包使用),struct申明和初始化格式采用多行
4)接口命名
命名规则基本和上面的结构体一致,单个函数的结构名以“er”作为后缀。例如:Reader
5)变量命名
和结构体类似,变量名称一般遵循驼峰法,首字母根据访问控制原则大写或者小写,但是遇到特有名词时,需要遵循以下规则
1、如果变量为私有,且特有名词为首个单词,则使用小写,例如:apiClient
2、其他情况都应当使用该名词原油的写法,如APIClient
若变量为bool类型,则名称应以Has,Is,Can或Allow开头
6)常量命名
常量均需使用全部大写字母组成,并使用下划线分词。例如:var APP_VER= “1.0”
如果是枚举类型的常量,需要先创建相应类型
7)关键字
以下为go中的保留字,这些保留字不能作为常量或者变量或任何其他标识符的名称。
函数命名
- 函数名还是使用驼峰命名法
- 但是有一点需要注意,在 Golang 中是用大小写来控制函数的可见性,因此当你需要在包外访问,请使用 大写字母开头
- 当你不需要在包外访问,请使用小写字母开头
另外,函数内部的参数的排列顺序也有几点原则
- 参数的重要程度越高,应排在越前面
- 简单的类型应优先复杂类型
- 尽可能将同种类型的参数放在相邻位置,则只需写一次类型
注释规范
注释分为
包注释
- 位于 package 之前,如果一个包有多个文件,只需要在一个文件中编写即可
- 如果你想在每个文件中的头部加上注释,需要在版权注释和 Package前面加一个空行,否则版权注释会作为Package的注释。
- 如果是特别复杂的包,可单独创建 doc.go 文件说明
代码注释
用于解释代码逻辑,可以有两种写法
单行注释使用 // ,多行注释使用 /* comment */
特别注释
- TODO:提醒维护人员此部分代码待完成
- FIXME:提醒维护人员此处有BUG待修复
- NOTE:维护人员要关注的一些问题说明
包的导入
单行的包导入
import "fmt"
多个包导入,请使用 () 来组织
import (
"fmt"
"os"
)
另外根据包的来源,对排版还有一定的要求
- 标准库排最前面,第三方包次之、项目内的其它包和当前包的子包排最后,每种分类以一空行分隔。
- 尽量不要使用相对路径来导入包。
善用 gofmt
除了命名规范外,Go 还有很多格式上的规范,比如
- 使用 tab 进行缩进
- 一行最长不要超过 80 个字符