21.2 goroutine

在Go语言中,协程的使用很简单,直接在函数(代码块)前加上关键字 go 即可。go关键字就是用来创建一个协程的,后面的代码块就是这个协程需要执行的代码逻辑。
package main
import (
	"fmt"
	"time"
)
func main() {
	for i := 1; i < 10; i++ {
		go func(i int) {
			fmt.Println(i)
		}(i)
	}
	// 暂停一会,保证打印全部结束
	time.Sleep(1e9)
}

time.Sleep(1e9) 让主程序不会马上退出,以便让协程运行完成,避免主程序退出时协程未处理完成甚至没有开始运行。

有关于协程之间的通信以及协程与主线程的控制以及多个协程的管理和控制,我们后续通过channel、context以及锁来进一步说明。

下一节:Go 奉行通过通信来共享内存,而不是共享内存来通信。所以,channel 是协程之间互相通信的通道,协程之间可以通过它发送消息和接收消息。