SuperAPI AI 工具集

go-options-gen

通用与其它

查看项目

更新于 10-16 00:29

技能介绍

用途:该技能帮助 Go 开发者使用 options-gen 库(https://github.com/kazhuravlev/options-gen)为组件生成类型安全的函数式选项,强调选项字段不导出以保持封装,同时对外提供干净的配置 API。

主要能力与约定:单选项集时结构体定义放在 options.go,生成代码放在 options_generated.go;多选项集时按组件前缀命名,如 myservice_options.go 与 myservice_options_generated.go。选项字段建议不导出(小写开头),只能通过生成的 With* setter 配置。组件结构体用不导出的 opts 字段保存选项。

使用方式:安装并跟踪工具:go get -tool github.com/kazhuravlev/options-gen/cmd/options-gen@latest。用 //go:generate 指令指定输出文件名与目标结构体,例如 //go:generate go tool options-gen -from-struct=Options -out-filename=options_generated.go,然后运行 go generate ./options.go。生成后在构造函数中调用 NewOptions(setters...) 并始终调用 Validate()。

字段规则:用 option:"mandatory" 标记无安全默认值的字段(如 API key、目标 URL),用 default:"value" 提供默认值(支持基本类型与 time.Duration)。复杂类型可用 -defaults-from=func 并定义默认值提供函数。校验使用 go-playground/validator 语法,如 validate:"required"、validate:"oneof=tcp udp"、validate:"min=1"。切片字段可用 option:"variadic=true" 生成可变参数 setter。

多组件场景:同一包内多个组件用前缀避免命名冲突,文件名用 <prefix>_options.go,生成器加 -out-prefix 前缀 NewOptions 与 Option...Setter 类型。

限制:资料未提供该技能的具体收费、平台支持范围或效果数据;示例实现可参考其 assets 目录。