title: Do Mutexes need initialization in Go?
body: <p>I am writing some thread-safe thingy in Go. I try to use Mutexes.</p>
  
  <p>The example I've found <a href="https://gobyexample.com/mutexes" rel="noreferrer">here</a>, seems to use the Mutexes without any initialization:</p>
  
  <pre><code>...
  // essential part of the referred page
  // (it is not my code, I know the pointer is unneeded here,
  // it is the code of the referred site in the link - @peterh)
  
  var mutex = &amp;sync.Mutex{}
  var readOps uint64 = 0
  var writeOps uint64 = 0
  
  for r := 0; r &lt; 100; r++ {
      go func() {
          total := 0
          for {
              key := rand.Intn(5)
              mutex.Lock()
  ....
  </code></pre>
  
  <p>I am a little bit surprised. Is it real, that they don't need any initialization?</p>