modulepackage
0.0.1
Repository: https://github.com/golang-tools/optparams.git
Documentation: pkg.go.dev
# README
optparams
用于设置关键字参数的管理模块.
思路参考自grpc项目.得力于1.18增加了泛型支持,现在可以大量减少重复代码了.
使用例子
package main
import (
"fmt"
"github.com/Golang-Tools/optparams"
)
type NameOpt struct { //<- 1.定义一个关键字参数的结构体
Name string
}
func WithName(name string) optparams.Option[NameOpt] {//<- 2.定义可用的关键字参数项,一般命名上使用`with`开头
return optparams.NewFuncOption(
func(o *NameOpt) {
o.Name = name
})
}
func expfunc(opts ...optparams.Option[NameOpt]) {//<- 3.像这样定义函数的关键字参数
opt := optparams.GetOption(&NameOpt{Name: "a"}, opts...) //<- 4.使用函数GetOption解析关键字参数
fmt.Println("opt:", opt)
}
func main() {
expfunc(WithName("b"))
}
感慨下泛型真方便
# Packages
No description provided by the author
# Functions
GetOption 用于获取一个完整的关键字参数结构实例.
NewFuncOption 用于构造关键字参数项目@generic T any 关键字参数对应的结构例子: func WithName(name string) optparams.Option[NameOpt] { return optparams.NewFuncOption( func(o *NameOpt) { o.Name = name }) }.
# Structs
FuncOption 作为关键字参数项的返回值@generic T any 关键字参数对应的结构.
# Interfaces
Option 作为关键字参数的形参类型@generic T any 关键字参数对应的结构.