Contents

go pkg包设计

设计考虑

以下是个人的建议,随便看看了解下

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提供接口和配置的定义.

验证项目得分

https://goreportcard.com/

评估项含

  • gofmt
  • go vet
  • go lint
  • gocyclo