I'm trying to understand concurrency in Go. In particular, I wrote this thread-unsafe program:
package main
import "fmt"
var x = 1
func inc_x() { //test
  for {
    x += 1
  }
}
func main() {
  go inc_x()
  for {
    fmt.Println(x)
  }
}
I recognize that I should be using channels to prevent race conditions with x, but that's not the point here.  The program prints 1 and then seems to loop forever (without printing anything more).  I would expect it to print an infinite list of numbers, possibly skipping some and repeating others due to the race condition (or worse -- printing the number while it is being updated in inc_x).
My question is: Why does the program only print one line?
Just to be clear: I'm not using channels on purpose for this toy example.
 
     
     
     
    