title: Go reflect field index - single index vs. slice
body: <p><code>reflect.StructField</code> has an <code>Index</code> field that is typed <code>[]int</code>.   The documentation on this is slightly confounding:</p>
  
  <pre><code>    Index     []int     // index sequence for Type.FieldByIndex
  </code></pre>
  
  <p>And of course <code>Type.FieldByIndex</code> follows suit as expected, with the somewhat clearer explanation of its behavior:</p>
  
  <pre><code>    // FieldByIndex returns the nested field corresponding
      // to the index sequence.  It is equivalent to calling Field
      // successively for each index i.
      // It panics if the type's Kind is not Struct.
      FieldByIndex(index []int) StructField
  </code></pre>
  
  <p>But, there is also <code>Type.Field()</code>:</p>
  
  <pre><code>    // Field returns a struct type's i'th field.
      // It panics if the type's Kind is not Struct.
      // It panics if i is not in the range [0, NumField()).
      Field(i int) StructFiel
  </code></pre>
  
  <p>So the behavior of those respectively is very clear.</p>
  
  <p>My question:   Exactly for which fields / what circumstances will a <code>reflect.StructField</code> have an <code>Index</code> with <code>len(field.Index) &gt; 1</code>?  Is this there to support enumerating embedded fields (reachable through an anonymous field in the parent)?  Does it happen in other cases?  (ie. is it  safe to assume if <code>!field.Anonymous</code>, then we can just use <code>field.Index[0]</code> as an argument to <code>Field(i int)</code>?)</p>