golang代码的命名规则

412 阅读3分钟

1、标识符 Identifiers

由字母、数字、下划线组成,只能字母或下划线开头,并且区分大小写

a
_x9
ThisVariableIsExported
αβ

1.1、关键字 Keywords

下列关键字是保留的,不能用作标识符

break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var

2、命名规则

go是一门区分大小写的语言,从语法层面进行了以下的限定 任何对外暴露的名字 必须以大写字母开头,不需要对外暴露的则 应该以小写字母开头

当命名(包括 常量、变量、类型、函数名、结构体)以一个 大写字母开头,如 GetUserName,那么它就可以被外部包 所使用(需要先导入这个包),类似面向对象语言中的 public , 如果以小写字母开头,则对外包是不可见的,但是他们在 整个包的内部是可见的并且可用的,类似面向对象语言的private

2.1、包名称

保持 package 的名字和目录保持一致,尽量采取有 意义的包名字,简短,有意义,尽量不要和标准库冲突, 包名 小写 ,不要使用下划线或者混合大些

package dao
package service 

2.2、文件命名

尽量采用有意义的文件名,应该使用小写,使用下划线分割各个单词

user_dao.go

2.3、结构体命名

采用 驼峰命名法,首字母根据访问控制大写或者小写 struct 申明和初始化格式采用多行

type CustomerOrder struct {
    Name string
    Address string 
}

order := CustomerOrder("tom","beijing")

2.4、接口命名

采用 驼峰命名法,首字母根据访问控制大写或者小写 单个函数的结构名以 "er" 作为后缀 ,例如 Reader,Writer

type Reader interface {
    Read (p []byte) (n int,err error)
}

2.5、变量命名

采用 驼峰命名法,首字母根据访问控制大写或者小写, 如果变量是私有,且以特有的名次为首个单词,则使用小写,如 appService, 如果变量类型为 bool 类型,则名称以 Has ,Is,Can,或 Allow 开头

var isExist bool
var hasConflict bool
var canManage bool
var allowGitHool bool 

2.6、常量命名

常量均使用全部 大写 字母组成,并使用下划线分词

const APP_URL = "wwww.baidu.com"

如果是枚举类型的常量,需要先创建相应类型:

type Scheme string 
const (
    HTTP Scheme = "http"
    HTTPS Scheme = "https"
)

2.7、错误处理

错误处理的原则就是不能丢弃任何有返回 err的调用,不要使用 _ 丢弃, 必须全部处理。接受的错误,要么返回 err ,或者使用 log 记录下来 尽早 return; 一旦有错误发生,马上返回,尽量不要使用 panic,除非你知道你在做什么。。 错误描述 如果是英文必须是小写 ,不需要标点结尾,采用独立的错误流进行处理

//错误写法
if err != nil {
    //
}else{

}


//正确写法
if err != nil {
    //错误处理
    return // 或者继续
}
//正确代码

2.8、单元测试

单元测试文件名 命名规范为 example_test.go ,测试用例的函数名称 必须以 Test 开头。

参考:官方 go语言编程规范