好乱呀,文件名是下划线分隔,函数名是大小写,那么URL呢?是中划线吗?
Go 语言初学者最容易在这些"起名规范"里绕晕,因为 Go 在不同场景下的审美标准完全不一样。
我帮你整理了一张"全场景命名避坑指南",你按这个表来就不会乱了:
1. 开发中的四大命名规则
| 场景 | 推荐格式 | 示例 | 理由 |
|---|---|---|---|
| 文件名 | 下划线 | refresh_cache.go |
Go 官方标准库风格,兼容性最强。 |
| Go 函数/变量 | 驼峰式 | GetUserInfo / isReady |
Go 语言强制规范,导出变量首字母必须大写。 |
| URL 路径 | 中划线 | /api/v1/user-profile |
SEO 友好,且在浏览器地址栏最易读,也是 RESTful 标准。 |
| JSON 字段 | 下划线 | {"user_id": 1} |
跨语言标准,前端 JavaScript/Python 处理最顺手。 |
2. 深度解析:为什么 URL 推荐中划线?
在 HTTP API 设计中,URL 路径(Path)推荐使用 kebab-case(中划线),原因如下:
- RFC 规范:域名是不区分大小写的,虽然路径区分,但为了统一,大家习惯全部小写。
- 可读性:
/api/user_profile(下划线)在带有下划线的超链接里,下划线会被链接本身的横线遮住,看不清是空格还是符号。而/api/user-profile永远清晰。 - 大厂惯例:Google、GitHub 等主流 API 几乎全部采用中划线。
3. 一个典型的代码片段(串联所有规范)
看这段代码,你就知道它们是怎么共存的了:
// 文件名: internal/handler/user_handler.go (下划线)
package handler
// 结构体字段用 JSON 标签定义下划线 (JSON规范)
type UserResponse struct {
UserName string `json:"user_name"`
}
// 函数名用驼峰 (Go规范)
func GetUserHandler(c *gin.Context) {
// 逻辑...
}
// 路由注册 (URL规范)
// 浏览器访问: http://api.com
r.GET("/get-user-info", GetUserHandler)
4. 总结你的疑惑
- 文件:
refresh_cache.go✅ - 函数:
func RefreshCache()✅ - URL:
/api/refresh-cache✅(如果是内部 API,/api/refresh_cache也能用,但不标准)
心态建设:
Go 是一门"强迫症"语言。你只需要记住:"给电脑看的文件名用下划线,给人看的网址用中划线,给 Go 编译器看的函数用驼峰"。