如何传不定参数?
如何动态传参?
如何实现默认传参?
// @Title demo
// @Description 函数选项模式
// @Author boLin
// @Update 2022-12-02 16:48:05
package demo
import (
"fmt"
"gin_bolin/app/validate"
"time"
)
// Option custom setup config
type Option func(*option)
// option 参数配置项
type option struct {
requestData *validate.Message
def int
}
func NewOptions(opts ...Option) *option {
entry := &option{}
entry.def = 100 //默认传参
//动态传参
for _,i := range opts {
i(entry)
}
return entry
}
// @title Handle
// @description : 并发安全
func (s *option) Handle() {
fmt.Println("接收到的参数", s.requestData)
time.Sleep(5 * time.Second)
fmt.Println("5秒后", s.requestData)
}
// WithAge requestData
func WithRequestData(requestData *validate.Message) Option {
return func(opt *option) {
opt.requestData = requestData
}
}
调用方式:
demo.NewOptions(demo.WithRequestData(message)).Handle()