type Mutex … // MutexAt returns a new Mutex with Path set to the given non-empty path. func MutexAt(path string) *Mutex { … } func (mu *Mutex) String() string { … } // Lock attempts to lock the Mutex. // // If successful, Lock returns a non-nil unlock function: it is provided as a // return-value instead of a separate method to remind the caller to check the // accompanying error. (See https://golang.org/issue/20803.) func (mu *Mutex) Lock() (unlock func(), err error) { … }