Go语言编码规范 | 青训营

155 阅读4分钟

一、命名规范

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中的保留字,这些保留字不能作为常量或者变量或任何其他标识符的名称。

image.png

函数命名

  1. 函数名还是使用驼峰命名法
  2. 但是有一点需要注意,在 Golang 中是用大小写来控制函数的可见性,因此当你需要在包外访问,请使用 大写字母开头
  3. 当你不需要在包外访问,请使用小写字母开头

另外,函数内部的参数的排列顺序也有几点原则

  1. 参数的重要程度越高,应排在越前面
  2. 简单的类型应优先复杂类型
  3. 尽可能将同种类型的参数放在相邻位置,则只需写一次类型

 注释规范

注释分为

包注释

  1. 位于 package 之前,如果一个包有多个文件,只需要在一个文件中编写即可
  2. 如果你想在每个文件中的头部加上注释,需要在版权注释和 Package前面加一个空行,否则版权注释会作为Package的注释。
  3. 如果是特别复杂的包,可单独创建 doc.go 文件说明

代码注释

用于解释代码逻辑,可以有两种写法

单行注释使用 // ,多行注释使用 /* comment */

特别注释

  • TODO:提醒维护人员此部分代码待完成
  • FIXME:提醒维护人员此处有BUG待修复
  • NOTE:维护人员要关注的一些问题说明

包的导入

单行的包导入

import "fmt"

多个包导入,请使用 () 来组织

import (
"fmt"
"os"
)

另外根据包的来源,对排版还有一定的要求

  1. 标准库排最前面,第三方包次之、项目内的其它包和当前包的子包排最后,每种分类以一空行分隔。
  2. 尽量不要使用相对路径来导入包。

善用 gofmt

除了命名规范外,Go 还有很多格式上的规范,比如

  1. 使用 tab 进行缩进
  2. 一行最长不要超过 80 个字符