美文网首页
闭包作为Go程在运行时会发生什么?

闭包作为Go程在运行时会发生什么?

作者: MrWu_e048 | 来源:发表于2017-06-11 12:32 被阅读0次

<pre>
package main
import (
"fmt"
)

func main() {
done := make(chan bool)

values := []string{"a", "b", "c"}
for \_, v := range values {
    go func() {
        fmt.Println(v)
        done <- true
    }()
}

// 在退出前等待所有Go程完成
for _ = range values {
    <-done
}

}
</pre>

输出:  有可能是 c c c  而不是你想象的 a b c
       每一个闭包共享变量v, 所以v有可能被其他goroutine 修改.

参考:
http://docscn.studygolang.com/doc/faq#不同的方法集

相关文章

  • 闭包作为Go程在运行时会发生什么?

    package mainimport ("fmt") func main() {done := make(chan...

  • 并发

    1、Go 程 Go 程(goroutine)是由 Go 运行时管理的轻量级线程。go f(x, y, z)会启动一...

  • 2019-05-23 Go语言学习四 并发

    一、Go程 Go 程(goroutine)是由 Go 运行时管理的轻量级线程。 会启动一个新的 Go 程并执行 f...

  • Golang标准库——runtime

    runtime runtime包提供和go运行时环境的互操作,如控制go程的函数。它也包括用于reflect包的低...

  • 函数表达式

    闭包 闭包是指有权访问另一个函数作用域中的变量的函数。 this this对象是在运行时基于函数的执行环境绑定的。

  • JS闭包

    什么是闭包? 闭包:函数执行时创建了一个内部函数,这个内部函数作为返回值,或以某种方式保留下来(属性),之后才会调...

  • Golang学习笔记-函数

    Go函数定义格式如下: 例如: Go可以很灵活的创建函数,并作为另外一个函数的实参: Go支持匿名函数,可作为闭包...

  • JavaScript 闭包(三)关于this对象

    在闭包中使用 this 对象也可能会导致一些问题。我们知道,this 对象是在运行时基于函数的执行环境绑定的;在全...

  • 第02天(函数、工程管理)_03

    11_函数类型.go 12_回调函数.go 13_匿名函数和闭包.go 14_闭包捕获外部变量的特点.go 15_...

  • go语言反射reflection

    反射:可以在运行时动态获取变量的相关信息 go语言中通过reflect包操作反射 获取基本类型 例子: 输出结果:...

网友评论

      本文标题:闭包作为Go程在运行时会发生什么?

      本文链接:https://www.haomeiwen.com/subject/lvshqxtx.html