在 go 中为自定义切片类型命名时,应优先采用 `somethingslice` 形式(如 `userslice`),而非 `slicesomething`;这既符合 go 官方代码审查规范、标准库惯例,也兼顾可读性与工具友好性。
Go 是一门强调简洁性与一致性的语言,其命名约定并非仅关乎个人偏好,而是深度融入标准库、工具链(如 gopls、go fmt)和社区共识。当你需要为切片添加方法(例如实现 Sort, Filter, AppendIfUnique 等行为)时,必须通过类型别名定义新类型:
type User struct{ ID int; Name string }
type UserSlice []User // ✅ 推荐:语义清晰,符合惯用法
func (u UserSlice) FilterActive() UserSlice {
var result UserSlice
for _, user := range u {
if user.ID > 0 {
result = append(result, user)
}
}
return result
}为什么是 UserSlice 而不是 SliceUser?原因有三:
配优化,UserSlice 能与 User 类型并列显示,便于导航;SliceUser 则会分散在 S 区域,割裂领域相关性。⚠️ 注意事项:
总结:坚持 SomethingSlice 模式,是你写出可维护、可协作、符合 Go 精神的代码的第一步。命名不是装饰,而是契约——它向读者承诺了类型的用途、边界与演化预期。