
go 语言中接口和实现的命名规范
在 go 语言中,接口和实现的命名遵循以下规范:
接口
- 使用大写驼峰命名法(例如:userservice)
实现
- 使用小写驼峰命名法,并在接口名后面附加 imp 后缀(例如:userserviceimp)
示例
使用上述命名规范,可将示例代码重写为:
type UserService interface {
SignupByEmail(ctx *gin.Context, user domain.User) error
LoginByEmail(ctx *gin.Context, user domain.User) (domain.User, error)
}
type userServiceImp struct {
userRepo repo.UserRepository
}
// NewUserServiceImp 返回一个实现 UserService 接口的具体实现。
func NewUserServiceImp(userRepo repo.UserRepository) UserService {
return &userServiceImp{userRepo: userRepo}
}这种命名规范有助于清晰区分接口和实现,并与 go 的惯例保持一致。此外,它允许构造函数返回一个具体的实现,而不是一个接口。
其他命名约定
对于存储库和其他组件,可以采用以下命名约定:
- 接口: userdao
- mysql 实现: usermysqldao
- 缓存实现: usercachedao
这些命名约定提供了一致且易于理解的命名方案。










