通道可以将内容从一个协程发送到另一个协程,使协程之间可以通信。因为通道是先进先出,保证收发数据的顺序。
func main(){
ch := make(chan int)
go func() {
//协程逻辑
fmt.Println("1 start")
//发送信息到通道,给下面的协程
ch <- 1
//fmt.Println("1 ok")
}()
go func() {
//协程的逻辑
//fmt.Println("2 start")
//接收上面协程发送过来的信息
s := <-ch
fmt.Println("2 ok: ", s) // ch等待到内容后在打印
}()
fmt.Println("ok")
time.Sleep(time.Second)
}
第一个协程向通道发送一个1,另一个协程接收。上面代码块中通过传递信息1来控制执行顺序。