跳到主要内容

Go 标识符和命名规范

标识符

在 Go 语言中,所有由程序员命名的内容都称为标识符。

命名方式

驼峰命名法

Go 语言推荐使用驼峰命名法。当标识符由多个单词组成时,每个单词的首字母都大写,例如 FirstNameLastName。如果标识符是私有的(仅在同一个包内可见),则第一个单词的首字母小写,例如 firstNamelastName

简短且有意义

Go 语言倡导简洁,但同时也强调可读性。变量、函数和方法的名称应该简短且富有描述性。例如,在不影响理解的情况下,可以使用 req 表示 request,使用 msg 表示 message

避免冗余

命名时,应避免包名称和标识符重复。例如,对于包 buffer,应将构造函数命名为 New 而不是 NewBuffer,因为调用时使用 buffer.New 已经足够清晰。

使用一致的缩写

对常用的词使用标准的缩写,并保持一致性。例如,使用 HTTP 而不是 HyperTextTransferProtocol,使用 ID 而不是 IdentityIdentifier

大小写敏感

Go 语言是大小写敏感的,这意味着 Variablevariable 被视为两个不同的标识符。

首字母大写的导出名

在 Go 中,首字母大写的变量或函数是导出的(可以从其他包中访问)。如果不希望外部包访问某个变量或函数,就不要将其首字母大写。

避免使用下划线

在 Go 中,标识符通常不包含下划线。即使在测试用例中,也使用 TestFunctionName 而不是 Test_Function_Name

专有名词的大写

如果函数名或变量名包含专有名词或缩略词,应将其完整大写。例如,ParseHTMLUserID。在处理缩略词时,建议使用一致的大小写风格,通常将整个缩略词大写。

Go 中的预定义标识符

Go 语言预定义了一些标识符,可在程序中直接使用。

基本类型

  • bool, byte, complex64, complex128, error, float32, float64, int, int8, int16, int32, int64, rune, string, uint, uint8, uint16, uint32, uint64, uintptr

常量

  • true, false, iota, nil

内建函数

  • append, cap, close, complex, copy, delete, imag, len, make, new, panic, print, println, real, recover

特殊标识符

  • init, main

命名规范

元素命名规范例子说明
项目名简短、小写,清晰、有意义myappgoserver避免使用下划线或混合大小写
包名小写,单个单词,不使用下划线或混合大小写fmthttpsql包名应简洁,反映功能
文件名小写,可包含下划线或短划线main.gouser_test.go不要使用空格,尽量简短描述文件内容
变量名驼峰命名法,首字母大小写取决于可见性userNamelocalVar公有变量首字母大写,私有变量首字母小写
常量名驼峰命名法,首字母大写MaxSizeURLProtocol常量名通常使用驼峰式,避免全大写加下划线
函数名驼峰命名法,首字母大小写取决于可见性CalculateTotalmain函数名应清晰描述功能,使用动词加名词形式
方法名驼峰命名法,首字母大小写取决于可见性user.PrintName方法名应与接收者类型紧密相关
接口名驼峰命名法,通常以 "er" 结尾,首字母大写ReaderWriter接口名应描述其行为,例如 io.Reader 表示读取功能
结构体名驼峰命名法,首字母大写AppConfigUserInfo结构体名通常是名词,清晰描述所代表的事物