title: Golang shadowing behavior explanation
body: <p>In this snippet</p>
  
  <pre><code>    list := []string{"a", "b", "c"}
      for {
          list := repeat(list)
  ...
  
      func repeat(list []string) []string {
  ...
  </code></pre>
  
  <p>it is clear that <code>list</code> variable used as the argument to <code>repeat()</code> function is the outer, shadowed list variable.  Now my question is, how would a Go language lawyer explain this behaviour?  At first glance, I thought the declaration of the inner list variable would have preceded the <code>repeat(list)</code> expression evaluation.</p>