Интерфейс с методами Lock() и Unlock(). Его реализуют *sync.Mutex и *sync.RWMutex. Используют когда функции принимают "любой примитив блокировки", например для условной блокировки или обёрток.
func withLock(l sync.Locker, f func()) { l.Lock(); defer l.Unlock(); f() }