title: Why is this Go code blocking?
body: <p>I wrote the following program:</p>
  
  <pre><code>package main
  
  import (
      "fmt"
  )
  
  func processevents(list chan func()) {
      for {
          //a := &lt;-list
          //a()
      }
  }
  
  func test() {
      fmt.Println("Ho!")
  }
  
  func main() {
  
      eventlist := make(chan func(), 100)
  
      go processevents(eventlist)
  
      for {
          eventlist &lt;- test
          fmt.Println("Hey!")
      }
  }
  </code></pre>
  
  <p>Since the channel eventlist is a buffered channel, I think I should get at exactly 100 times the output "Hey!", but it is displayed only once. Where is my mistake?</p>