The best definition of any Go type can be found in its comments/go-doc. If it’s not there you’re looking at a bad library.
Cond implements a condition variable, a rendezvous point for goroutines waiting for or announcing the occurrence of an event.
Each Cond has an associated Locker L (often a *Mutex or *RWMutex), which must be held when changing the condition and when calling the Wait method.
A Cond must not be copied after first use.
Very often you’ll want to wait for one of these signals before continuing execution on a goroutine. If we were to accomplish this without the Cond type, one naive approach of doing this is an infinite loop: