package main
import "fmt"
func main(){
var conf config = BuildConfig(WitchConfiga(2),WitchConfigb("1111"))
fmt.Print(conf)
}
//项目中配置文件的写法
type config struct{
a int
b string
}
func BuildConfig(ops ...Option) config {
var c config = config{
a:1,
b:"5555",
}
for _,op := range ops{
op.apply(&c)
}
return c
}
type Option interface {
apply(*config)
}
type Optiona struct {
a int
}
func (a Optiona) apply(c *config){
c.a = a.a
}
func WitchConfiga(a int) Option {
return Optiona{
a:a,
}
}
type Optionb struct {
b string
}
func (b Optionb) apply(c *config){
c.b = b.b
}
func WitchConfigb(b string) Option {
return Optionb{
b:b,
}
}