title: recursive function in go language
body: <p>I started to learn go language days ago. When I tried to start writing some fun codes, I am stuck by a strange behavior.</p>
  
  <pre><code>package main
  
  import "fmt"
  
  func recv(value int) {
      if value &lt; 0 {
          return
      }
  
      fmt.Println(value)
      go recv(value-1)
  }
  
  func main() {
      recv(10)
  }
  </code></pre>
  
  <p>when I run the above code, only <code>10</code> is printed. When I remove the <code>go</code> before the call to <code>recv</code>, <code>10</code> to <code>0</code> are printed out. I believe I am misusing go routine here, but I can not understand why it failed start a go routine this way.</p>