// Goroutine是一个轻量级的执行线程 package main import "fmt" func f(from string) { for i := 0; i < 3; i++ { fmt.Println(from, ":", i) } } func main() { f("direct") // 调用f()函数,并以同步的方式运行 go f("goroutine") // 在goroutine中调用f()函数,这个新的goroutine将与发起调用的goroutine同时执行 go func(msg string) { // 以匿名函数调用启动goroutine fmt.Println(msg) }("going") // 上述两个函数调用在不同的goroutine中异步运行,执行到此为止 fmt.Scanln() // Scanln()函数需要在程序退出钱按一个按键 fmt.Println("done") } // 程序运行后,首先看到阻塞调用的输出,然后是两个goroutine的交错输出 // 这种交错输出反应了Go运行时启动的并发运行的goroutine