package bhomedbapi import ( "basic.com/valib/bhshmq.git/proto/source/bhome_msg" ) //Factory new client func NewClient(opts ...IOption) Client { opt := defaultOption() for _,o := range opts { o.apply(&opt) } return &SBusClient{ nodes: opt.nodes, } } type Option struct { nodes []bhome_msg.BHAddress } type IOption interface { apply(*Option) } type funcOption struct { f func(*Option) } func (fo *funcOption) apply(o *Option) { fo.f(o) } func newFuncOption(f func(*Option)) *funcOption { return &funcOption{ f:f, } } func WithNodes(nodeArr []bhome_msg.BHAddress) IOption { return newFuncOption(func(o *Option) { o.nodes = nodeArr }) } func defaultOption() Option { return Option{ } }