title: Should I create pointers on struct field or on struct? Go
body: <p>I'm wondering what's the best practice on pointers. Should I define them on the struct or on its fields. I though it makes sense to define a pointer to the struct itself but here is an example I find intriguing. If all the fields are pointers why shouldn't I use a pointer to the entire struct instead to get an address for each field?</p>
  
  <pre><code>type Tag struct {
      Tag     *string       `json:"tag,omitempty"`
      SHA     *string       `json:"sha,omitempty"`
      URL     *string       `json:"url,omitempty"`
      Message *string       `json:"message,omitempty"`
      Tagger  *CommitAuthor `json:"tagger,omitempty"`
      Object  *GitObject    `json:"object,omitempty"`
  }
  </code></pre>
  
  <p>A sample of the struct content below</p>
  
  <pre><code>{
    "tag": "v0.0.1",
    "sha": "940bd336248efae0f9ee5bc7b2d5c985887b16ac",
    "url": "https://api.github.com/repos/octocat/Hello-World/git/tags/940bd336248efae0f9ee5bc7b2d5c985887b16ac",
    "message": "initial version\n",
    "tagger": {
      "name": "Scott Chacon",
      "email": "schacon@gmail.com",
      "date": "2011-06-17T14:53:35-07:00"
    },
    "object": {
      "type": "commit",
      "sha": "c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c",
      "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/c3d0be41ecbe669545ee3e94d31ed9a4bc91ee3c"
    }
  }
  </code></pre>