title: Difference between &Struct{} vs Struct{}
body: <p>Is there a reason why I should create a struct using <code>&amp;StructName{}</code> instead of <code>Struct{}</code>? I see many examples using the former syntax, even in the <a href="https://golang.org/doc/effective_go.html#composite_literals" rel="noreferrer">Effective Go Page</a> but I really can not understand why.</p>
  
  <p>Additional Notes:
  I'm not sure whether I explained my problem well with these two approaches so let me refine my question.</p>
  
  <p>I know that by using the <code>&amp;</code> I will recieve a pointer instead of a value however I would like to know why would I use the <code>&amp;StructName{}</code> instead of the <code>StructName{}</code>. For example, is there any benefits of using:</p>
  
  <pre><code>func NewJob(command string, logger *log.Logger) *Job {
      return &amp;Job{command, logger}
  }
  </code></pre>
  
  <p>instead of:</p>
  
  <pre><code>func NewJob(command string, logger *log.Logger) Job {
      return Job{command, logger}
  }
  </code></pre>