title: Select statement nuances
body: <p>I read about select statements and its execution steps but I'm not fully understanding what's happening here.</p>
  
  <p>I created two examples of a Fan-In function (from the <a href="http://talks.golang.org/2012/concurrency.slide#28" rel="nofollow">Go Concurrency Patterns talk</a>)</p>
  
  <p><a href="http://play.golang.org/p/Xz9Fs2OhpX" rel="nofollow"><strong>The first one</strong></a>:</p>
  
  <pre><code>select {
  case value := &lt;-g1:
      c &lt;- value
  case value := &lt;-g2:
      c &lt;- value
  }
  </code></pre>
  
  <p>Prints from each channel as expected (each channel keeps its own counter):</p>
  
  <pre><code>Bob  : 0
  Alice: 0
  Bob  : 1
  Alice: 1
  Bob  : 2
  Alice: 2
  Alice: 3
  Alice: 4
  Bob  : 3
  Alice: 5
  </code></pre>
  
  <p><a href="http://play.golang.org/p/LYJRbt5Oa0" rel="nofollow"><strong>The second one</strong></a>:</p>
  
  <pre><code>select {
  case c &lt;- &lt;-g1:
  case c &lt;- &lt;-g2:
  }
  </code></pre>
  
  <p>It is randomly selecting a channel and discarding the other one's value:</p>
  
  <pre><code>Bob  : 0
  Alice: 1
  Alice: 2
  Alice: 3
  Bob  : 4
  Alice: 5
  Bob  : 6
  Alice: 7
  Alice: 8
  Bob  : 9
  </code></pre>
  
  <p><strong>Update:</strong> while writing this question, I thought the second <code>select</code> <a href="http://play.golang.org/p/-QCr7bEF40" rel="nofollow">was equal to</a>:</p>
  
  <pre><code>var v string
  select {
  case v = &lt;-g1:
  case v = &lt;-g2:
      c &lt;- v
  }
  </code></pre>
  
  <p>But I was wrong, because this one always prints from the second channel (<strike>as expected from a switch like statement</strike> because there isn't fallthrough in select statements):</p>
  
  <pre><code>Bob  : 0
  Bob  : 1
  Bob  : 2
  Bob  : 3
  Bob  : 4
  Bob  : 5
  Bob  : 6
  Bob  : 7
  Bob  : 8
  Bob  : 9
  </code></pre>
  
  <p><strong>Does someone understand why my second example creates a sequence?</strong></p>
  
  <p>Thanks,</p>