go pkg包设计
Contents
设计考虑
以下是个人的建议,随便看看了解下
context支持
一般入参数context是第一个参数,提供了timeout机制
logger接口定义
在组件的初始化时,将使用方的日志实例进行接口约束,
要求实现其debug,error级别method.
可以参考gorm的logger设计
hook注入
方便使用方对metric的收集,可以参考redis hook设计
布局了解
这里只是提供参考建议
知道internal目录对内部系统的保护
跨平台支持
查看支持平台
go tool dist list
条件编译约束
//go:build (linux && 386) || (darwin && !cgo)
https://pkg.go.dev/cmd/go#hdr-Build_constraints
linters集成
https://golangci-lint.run/ 提高代码质量
版本约束
具体查看 https://go.dev/ref/mod#versions
依赖注入
https://github.com/google/wire
使得依赖关系变得整洁
参数配置
Functional Options Pattern,代码优雅
IDL
https://protobuf.dev/ 利用protobuf提供接口和配置的定义.
验证项目得分
评估项含
- gofmt
- go vet
- go lint
- gocyclo