title: Go channel not deadlocked or locked
body: <p>I have a small snippet of code like this</p>
  
  <pre><code>func main() {
      var c chan string
      go func() {
          c &lt;- "let's get started"//write1
          //c &lt;- "let's get started"//write2
          //c &lt;- "let's get started"//write3
          fmt.Println("wrote the stuff....")
      }()
      //time.Sleep(3 * time.Second) //adding this always shows fatal exception
      c = make(chan string)
      fmt.Println(&lt;-c)
  }
  </code></pre>
  
  <p>I do not see the output <code>wrote the stuff....</code> on console if I uncomment <code>//write2</code> and <code>write3</code> code snippet lines. I understand that probably I don't see it is because the channel is unbuffered and totally synchronous, and there is only one read happening outside the channel. However, when program exits, the go routine is blocked, why is there no error like <code>deadlocked...</code> or something in this case that I see?</p>