Categorygithub.com/Golang-Tools/optparams
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 关键字参数对应的结构.