一些关键的命名规范。

一、包

  1. 对于包的命名,建议是以小写形式的单个单词命名。

    在 Go 里面,包的名称不要求是唯一的。

  2. 包的名称尽量和包的导入路径里面的最后一个路径一致。

    每个包的导入路径是唯一的。

    比如 Go 的 Web 框架 Gin,包的名称是 gin,导入路径是:

    1
    
    import "github.com/gin-gonic/gin"
    
  3. 对于包的导出标识符的命令,在名字中不要再包含包的名称。

    假如有个名为 github.com/zeepunt/lora 的包,对于包的导出标识符:

    1
    2
    3
    4
    5
    6
    7
    
    import "github.com/zeepunt/lora"
    
    // 推荐
    lora.Sx126xOpen()
    
    // 不推荐, 因为 LoraSx126xOpen 携带了包的名称
    lora.LoraSx126xOpen()
    

二、标识符

标识符的命名采用驼峰命名法(CamelCase)。

标识符可以指的是变量名称、函数名称、接口名称等。

  1. 小驼峰拼写法(lowerCamelCase)

    第一个单词的首字母小写,后面每个单词的首字母大写。

  2. 大驼峰拼写法(UpperCamelCas)

    又称为帕斯卡拼写法(PascalCase)。

    每个单词的首字母都需大写。

注意

  1. Go 里面默认大驼峰拼写法的标识符用于包导出标识符

    比如,在 lora 包里面有两个函数,分别是 Sx126xOpen 和 sx1262Info,那么只有 Sx126xOpen 函数可以被外部访问,sx1262Info 只能被包的内部访问。

  2. 如果缩略词的首字母是大写的,那么其他的字母也要大写。

    比如,HTTP 不要写成 Http。

三、常量

Go语言中,常量在命名方式上与变量并无较大差别,并不要求全部大写。

下面两种写法都可以:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// Device Class
const (
    deviceClassA = 0
    deviceClassB = 1
)

// Device Type
const (
    DEVICETYPEA = 0
    DEVICETYPEB = 1
)

四、接口

在Go语言中,对于接口类型优先以单个单词命名。

对于拥有唯一方法(method)或通过多个拥有唯一方法的接口组合而成的接口,Go语言的惯例是用 方法名+er 命名。

比如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
// 标准库: $GOROOT/src/io/io.go

type Writer interface {
    Write(p []byte) (n int, err error)
}

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

type Closer interface {
    Close() error
}

type ReadWriteCloser interface {
    Reader
    Writer
    Closer
}

版权声明

本文为「Zeepunt 日常随笔」的原创文章,遵循 CC 4.0 BY-SA 版权协议。

原文链接:https://zeepunt.github.io/article/go/go%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83/