title: Are maps passed by value or by reference in Go?
body: <p>Are maps passed by value or reference in Go ?</p>
  
  <p>It is always possible to define a function as following, but is this an overkill ?</p>
  
  <pre><code>func foo(dat *map[string]interface{}) {...}
  </code></pre>
  
  <p>Same question for return value. Should I return a pointer to the map, or return the map as value ? </p>
  
  <p>The intention is of course to avoid unnecessary data copy. </p>