title: How does make(chan bool) behave differently from make(chan bool, 1)?
body: <p>My question arises from trying to read a channel, if I can, or write it, if I can, using a <code>select</code> statement.</p>
  
  <p>I know that channels specified like <code>make(chan bool, 1)</code> are buffered, and part of my question is what is the difference between that, and <code>make(chan bool)</code> -- which <a href="http://golang.org/doc/effective_go.html#channels" rel="noreferrer">this page</a> says is the same thing as <code>make(chan bool, 0)</code> --- what is the point of a channel that can fit 0 values in it?</p>
  
  <p>See <strong><a href="http://play.golang.org/p/EcGzhdqdn2" rel="noreferrer">playground A</a></strong>:</p>
  
  <pre><code>chanFoo := make(chan bool)
  
  for i := 0; i &lt; 5; i++ {
      select {
      case &lt;-chanFoo:
          fmt.Println("Read")
      case chanFoo &lt;- true:
          fmt.Println("Write")
      default:
          fmt.Println("Neither")
      }
  }
  </code></pre>
  
  <p>A output:</p>
  
  <pre><code>Neither
  Neither
  Neither
  Neither
  Neither
  </code></pre>
  
  <p>(Removing the <code>default</code> case results in a deadlock!!)</p>
  
  <p>Now see <strong><a href="http://play.golang.org/p/YW6Ezz6X-v" rel="noreferrer">playground B</a></strong>:</p>
  
  <pre><code>chanFoo := make(chan bool, 1)   // the only difference is the buffer size of 1
  
  for i := 0; i &lt; 5; i++ {
      select {
      case &lt;-chanFoo:
          fmt.Println("Read")
      case chanFoo &lt;- true:
          fmt.Println("Write")
      default:
          fmt.Println("Neither")
      }
  }
  </code></pre>
  
  <p>B output:</p>
  
  <pre><code>Write
  Read
  Write
  Read
  Write
  </code></pre>
  
  <p>In my case, <em>B output</em> is what I want. What good are unbuffered channels? All the examples I see on golang.org appear to use them to send one signal/value at a time (which is all I need) -- but as in playground A, the channel never gets read <em>or</em> written. What am I missing here in my understanding of channels?</p>