/*************************************************************************
@Author: x
@Created Time : 一 11/ 2 16:55:41 2020
@File Name: param.go
@Description:
************************************************************************/
package main
import (
"fmt"
)
type Params struct {
a string
b int
c string
}
type setParams func(params *Params)
func withA(a string) setParams {
return func(params *Params) {
params.a = a
}
}
func withB(b int) setParams {
return func(params *Params) {
params.b = b
}
}
func withC(c string) setParams {
return func(params *Params) {
params.c = c
}
}
func setValue(params *Params, test ...setParams) {//可支持变长参数
for _, o := range test {
o(params)
}
}
func main() {
param := &Params{}
setValue(param, withA("hello"), withB(2020), withC("world"))
fmt.Println(param)
}