Go Naming Conventions: A Practical Guide
2 months ago
- #Naming Conventions
- #Go
- #Best Practices
- Go语言对标识符命名有特定规则:仅使用Unicode字母、数字和下划线;不能以数字开头;不能使用Go关键字。
- 未导出的标识符使用驼峰式命名(camelCase),导出的使用帕斯卡命名法(PascalCase)。避免使用蛇形命名(snake_case)或全大写蛇形命名(SCREAMING_SNAKE_CASE)等。
- 缩写或首字母缩略词(如API、URL)应在标识符中保持统一大小写(例如apiKey或APIKey,而非ApiKey)。
- 除非必要,避免在标识符中使用非ASCII字母(例如用'pi'而非'π')。
- 不要使用与Go内置类型(如int、bool)或函数(如min、max)冲突的标识符。
- 通常应避免在标识符中包含类型信息(例如fullNameString较差,fullName更佳)。
- 包名应简短、全小写且具有描述性(例如用'orders'而非'OrderManager')。
- 避免使用'utils'或'helpers'等万能包名——应拆分为更小、功能聚焦的包。
- 文件名应概括内容、全小写,除非需要否则避免特殊前缀/后缀(例如测试文件用_test.go)。
- 避免在导出函数中重复包名(例如用customer.New()而非customer.NewCustomer())。
- 方法接收器应简短(1-3个字符)且同一类型的方法保持命名一致。
- Getter方法不应带'Get'前缀;Setter方法应使用'Set'(例如Name()和SetName())。
- 单方法接口名称应带'-er'后缀(如Reader、Writer)。
- 在极少数情况下,若破坏惯例能提升清晰度(例如匹配外部系统命名),可以接受例外。