title: Convert slice of string to slice of pointer to string
body: <p>I want to convert a slice of string into slice of pointer to string</p>
  
  <pre><code>values1 := []string{"a", "b", "c"}
  var values2 []*string
  for _, v := range values1 {
      fmt.Printf("%p | %T\n", v, v)
      values2 = append(values2, &amp;v)
  }
  fmt.Println(values2)
  </code></pre>
  
  <blockquote>
    <p>%!p(string=a) => string <br/>
    %!p(string=b) => string <br/>
    %!p(string=c) => string <br/>
    [0xc42000e1d0 0xc42000e1d0 0xc42000e1d0]</p>
  </blockquote>
  
  <p>From my understanding, <br />
  My variable <code>v</code> seems to be a string, not a pointer to string. <br />
  Therefore <code>v</code> should be copied from <code>values1</code> when iterating.</p>
  
  <p>Obviously I'm incorrect as <code>v</code> still have the same address <code>0xc42000e1d0</code>. <br />
  How can <code>v</code> value change if it's not a pointer?</p>
  
  <p><b>For a quick solution use:</b></p>
  
  <pre><code>values1 := []string{"a", "b", "c"}
  var values2 []*string
  for i, _ := range values1 {
      values2 = append(values2, &amp;values1[i])
  }
  </code></pre>