title: goroutine channels - the value of send statement
body: <p>When I tried to print out: <pre>fmt.Println(c &lt;- x)</pre> right before the for loop in the code block below to see what "c &lt;- x" would evaluate to, it got the error message:</p>
  
  <p>./select.go:7: send statement c &lt;- x used as value; use select for non-blocking send</p>
  
  <p>Is "c &lt;- x" evaluated to true if the sending operation was successful? And why does Go only let you use the value of the send statement (aka value of "c &lt;- x") inside case statements inside a select statement?</p>
  
  <pre><code>    func fibonacci(c, quit chan int) {
          x, y := 1, 1
  
          for {
              select {
              case c &lt;- x:
                  x, y = y, x + y
              case &lt;-quit:
                  fmt.Println("quit")
                  return
              }
          }
      }
  </code></pre>
  
  <p>Thank you</p>