code: func (m *Mutex) TryLock() bool {
  	v := atomic.LoadInt32(&m.v)
  	if v <= 0 {
  		return false
  	}
  	return atomic.CompareAndSwapInt32(&m.v, 1, 0)
  }
docs: // TryLock attempts to acquire the mutex without blocking. If the mutex is
  // currently held by another goroutine, it fails to acquire it and returns
  // false.