gobyexample-goroutines

来源:https://github.com/xg-wang/gobyexample/tree/master/examples

//_Go 协程(goroutine)_在执行上来说是轻量级的线程
package main

import "fmt"

func f(from string) {
    for i := 0; i < 3; i++ {
        fmt.Println(from, ":", i)
    }
}

func main() {

    //假设我们有一个函数叫做`f(s)`。一般会这样同步(synchronously)调用
    f("direct")

    //使用`go f(s)`在一个 Go 协程中调用这个函数,这个新的Go协程将会并发(concurrently)执行这个函数
    go f("goroutine")

    //你也可以为匿名函数启动一个 Go 协程
    go func(msg string) {
        fmt.Println(msg)
    }("going")

    //现在这两个 Go 协程在独立的 Go 协程中异步(asynchronously)运行,所以
    //程序直接运行到这一行。这里的`Scanln`需要我们在程序退出前按下任意键结束
    fmt.Scanln()
    fmt.Println("done")
}

输出结果:

direct : 0
direct : 1
direct : 2
going
goroutine : 0
goroutine : 1
goroutine : 2

done
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容