title: sync.Mutex and *sync.Mutex Which is better?
body: <p>In Go, we can use:</p>
  <pre><code>type Data struct {
      lock  *sync.Mutex
  }
  </code></pre>
  <p>or</p>
  <pre><code>type Data struct {
      lock  sync.Mutex
  }
  </code></pre>
  <p>And, use like this:</p>
  <pre><code>func (d *Data) Update() {
     d.lock.Lock()
     defer d.lock.Unlock()
     // update
  }
  </code></pre>
  <p>The difference I can think of is that <code>*sync.Mutex</code> needs instantiation to use only.</p>
  <p>What is the difference between <code>sync.Mutex</code> and <code>*sync.Mutex</code> in Go and which one is better?</p>