title: channel consume order in different goroutine
body: <pre><code>package main
  
  import (
      "fmt"
      "time"
  )
  
  func main() {
      done := make(chan bool)
  
      go func() {
          for {
              select {
              case &lt;-done:
                  fmt.Println("here")
              }
          }
      }()
  
      go func() {
          q := time.NewTimer(time.Second)
          &lt;-q.C
          done &lt;- true
      }()
  
      &lt;-done
      fmt.Println("closing")
  }
  </code></pre>
  
  <p>My question is if <code>done</code> channel is consumed by goroutine not main goroutine.
  the program will be blocked.</p>
  
  <p>But the fact is that the program never be blocked.main goroutine seem to be consumed the <code>done</code> channel everytime.</p>
  
  <p>Why?</p>