golang goroutine协程按顺序执行

文章发布于 2023-08-24

通道可以将内容从一个协程发送到另一个协程,使协程之间可以通信。因为通道是先进先出,保证收发数据的顺序。

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来控制执行顺序。