title: Why are receivers pass by value in Go?
body: <p>Seems like you'd ALWAYS want this:</p>
  
  <pre><code>func (self *Widget) Do() {
  }
  </code></pre>
  
  <p>instead of this</p>
  
  <pre><code>func (self Widget) Do() {
  }
  </code></pre>
  
  <p>If so, then the way to get the former semantics <em>OUGHT</em> to be by using the latter syntax. i.e. receivers ought to be pass by reference.</p>