package diffsync type Option struct { Patcher Patcher Differ Differ } func WithPatcher(p Patcher) OptionFunc { return func(opt *Option) { opt.Patcher = p } } func WithDiffer(d Differ) OptionFunc { return func(opt *Option) { opt.Differ = d } } type OptionFunc func(*Option) func DefaultOption() *Option { return MergeOption( &Option{}, ) } func MergeOption(opt *Option, funcs ...OptionFunc) *Option { for _, fn := range funcs { fn(opt) } return opt }