go 语言结构图优雅初始化的一种方式
该方式存于go-micro,go-grpc中
package main
import "fmt"
type Config struct {
A string
B int
}
type option func(c *Config)
func NewConig(o ...option) *Config{
c := Config{
A:"wida",
B:3,
}
for _,op:= range o {
op(&c)
}
return &c
}
func writeA(a string) option{
return func(c *Config) {
c.A=a
}
}
func writeB(b int) option{
return func(c *Config) {
c.B = b
}
}
func main() {
a := writeA("amy")
b := writeB(6)
c := NewConig(a,b)
fmt.Println(c)
}
运行:
# go run main.go
&{amy 6}