package main import ( "fmt" "time" ) func printX() { for i := 0; i < 100; i++ { fmt.Print("X") } } func printY() { for i := 0; i < 100; i++ { fmt.Print("Y") } } func main() { fmt.Println("a goroutine is a **lightweight** thread managed by the go runtime") printX() fmt.Println() printY() fmt.Println() fmt.Println("you should see first X's then Y's") time.Sleep(100 * time.Millisecond) fmt.Println() fmt.Println() go printX() go printY() fmt.Println("you should see random X's and Y's, this because concurrency") time.Sleep(1 * time.Second) // wait for prevent main goroutine to terminate }