title: Is it necessary to return pointer type in sync.Pool New function?
body: <p>I saw the <a href="https://github.com/golang/go/issues/16323" rel="nofollow noreferrer">issue</a> on Github which says sync.Pool should be used <strong>only</strong> with pointer types, for example:</p>
  
  <pre><code>var TPool = sync.Pool{
      New: func() interface{} {
         return new(T)
      },
  }
  </code></pre>
  
  <p>Does it make sense? What about <code>return T{}</code> and which is the better choice, why? </p>