optparams

package module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2022 License: MIT Imports: 0 Imported by: 45

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"))
}

感慨下泛型真方便

Documentation

Overview

optparams 用于管理关键字参数的模块

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetOption

func GetOption[T any](defaultopt *T, opts ...Option[T]) *T

GetOption 用于获取一个完整的关键字参数结构实例

Types

type FuncOption

type FuncOption[T any] struct {
	// contains filtered or unexported fields
}

FuncOption 作为关键字参数项的返回值 @generic T any 关键字参数对应的结构

func NewFuncOption

func NewFuncOption[T any](f func(*T)) *FuncOption[T]

NewFuncOption 用于构造关键字参数项目 @generic T any 关键字参数对应的结构 例子:

func WithName(name string) optparams.Option[NameOpt] {
	return optparams.NewFuncOption(
		func(o *NameOpt) {
			o.Name = name
		})
}

func (*FuncOption[T]) Apply

func (fo *FuncOption[T]) Apply(do *T)

type Option

type Option[T any] interface {
	Apply(*T)
}

Option 作为关键字参数的形参类型 @generic T any 关键字参数对应的结构

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL