信道是什么?
簡單說,是goroutine之間互相通訊的東西。用來goroutine之間發消息和接收消息。
執行:
go goTest()
方法不會觸發,因為還沒到該方法時,主函數已經退出了。
需要一個類似join的東西來阻塞住主線。
創建信道:
使用make來建立一個信道。
var channel chan int = make(chan int)
或
channel := make(chan int)
例子:
var complete chan int = make(chan int)
func loop() {
for i := 0; i < 10; i++ {
fmt.Printf("%d ", i)
}
complete <- 0 // 執行完畢了,發個消息
}
func main() {
go loop()
<- complete // 直到線程跑完, 取到消息. main在此阻塞住
}