package lock type Options struct { maxWaitTime int expireTime int block bool reNew bool } type Option func(o *Options) func (o *Options) repire() { if o.expireTime <= 0 { o.expireTime = 10 o.reNew = true } } func WithExpireTime(expire int) Option { return func(o *Options) { o.expireTime = expire } } func WithBlock() Option { return func(o *Options) { o.block = true } } func WithMaxWaitTime(watiTime int) Option { return func(o *Options) { o.maxWaitTime = watiTime } }