编码规范

文件名

该分类下主要描述了与文件名相关的规范

文件夹名

  1. 全部小写
  2. 单词之间用 “-” 分割。

示例:client-api

Go文件名

  1. 全部小写
  2. 单词之间用 “_” 分割。

示例:discovery_client.go

▼查看综合示例▼
.
├── controllers
│   ├── api.go
│   ├── score.go
│   ├── student.go
│   └── teacher.go
└── models
    ├── score.go
    ├── student.go
    └── teacher.go

包名

应与当前所在文件夹的名称一致

示例:
文件夹:controllers

1
2
3
4
5
6
// panda.go
package controllers

type PandaController struct {
}
...

声明

该分类下主要描述了与 结构体/变量 相关的规范

结构体

  1. 按照场景需求来确定首字母大小写
  2. 单词之间,遵循驼峰命名法
1
2
3
4
ApiController
PandaController
ZooController
...

变量

  1. 开头小写字母
  2. 单词之间,遵循驼峰命名法
  3. 尽量缩小变量的作用域(能定义为局部就不要定义为全局变量)

常量

  1. 全部大写
  2. 单词之间用 “-” 分割。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
const (
ADMIN_EDITOR = 1
ADMIN_MANAGE = 2
ADMIN_SU = 3
)
// 或
const (
_ = iota
ADMIN_EDITOR
ADMIN_MANAGE
ADMIN_SU
)

类型

  1. 数字类型不要声明为int,改为int64
    • int类型在32位CPU上为4字节的int32,而在64位上则为8字节的int64
    • 目前无论是开发环境还是正式环境,都不太可能有32位CPU了
    • 除非是面向嵌入式开发,或者特殊场景需求。否则都建议使用int64
    • 在proto中,数字类型有int32int64这两种,使用int64则免去了对接过程中的强制类型转换