// Package lock provides distributed locking package lock import ( "time" ) // Lock is a distributed locking interface type Lock interface { // Acquire a lock with given id Acquire(id string, opts ...AcquireOption) error // Release the lock with given id Release(id string) error } type Options struct { Nodes []string Prefix string } type AcquireOptions struct { TTL time.Duration Wait time.Duration } type Option func(o *Options) type AcquireOption func(o *AcquireOptions)