Go 协程 在执行上来说是轻量级的线程。
golang使用协程用go关键字。后边正常调用函数。
Example:
package main import "fmt" func ak(str string){ for i:=0; i<3; i++{ fmt.Println(str, ":", i) } } //协程main中要注意,协程还没执行完main就退出了。 //换句话说就是main没有等待所有goroutine结束即退出。 func main(){ ak("direct") go ak("goroutine") go ak("sk") //go异步运行,这里用Scanln等待,需要退出时,要工按键退出。 var input string fmt.Scanln(&input) fmt.Println("done") }
Result:
$ go run example.go direct : 0 direct : 1 direct : 2 goroutine : 0 sk : 0 sk : 1 sk : 2 goroutine : 1 goroutine : 2
从结果可以看出,direct是阻塞输出。goroutine和sk是异步交替输出。