- 39
- 0
代码如下:
package main
import (
"fmt"
"sync"
"time"
)
var a = [...]int{1, 2, 3, 4, 5}
func Run() {
fmt.Println("begin")
var wg sync.WaitGroup
wg.Add(len(a))
for _, i := range a {
/* go func(i int) { // 函数变量是以值的方式传递的
fmt.Printf("get value %d \n", i)
time.Sleep(time.Second)
wg.Done()
}(i)*/
go func() {
fmt.Printf("get value %d\n", i)
time.Sleep(time.Second)
wg.Done()
}()
}
wg.Wait()
fmt.Println("end")
}
func main() {
Run()
}
运行结果输出:
begin
get value 5
get value 5
get value 5
get value 5
get value 5
end
不给匿名函数传参的话,为什么只能获取最后一个值,其中原理还是想不太明白,请各位大哥给讲解下,谢谢!!!
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
- 共 0 条
- 全部回答
-
心已涼兮 普通会员 1楼
闭包是指函数和函数值的封装。简单来说,闭包就是一个函数,它能够访问并修改函数外部的变量。
闭包有以下特性:
-
可以访问外部变量:由于闭包是函数的引用,所以它可以访问外部变量,即使函数已经被调用并且返回。
-
可以修改外部变量:闭包可以修改外部变量,即使该变量已经在函数内部定义。
-
可以存储内部变量:闭包可以存储内部变量,即使该变量已经在函数内部定义。
-
可以包含函数:一个闭包可以包含另一个函数,这样就可以在函数内部访问外部变量。
闭包的一个常见用法是实现函数工厂。例如,你可以有一个函数,该函数返回一个闭包,该闭包可以访问并修改返回的函数的局部变量。
以下是一个简单的函数工厂的例子:
go func makeClosure(func() func() string) func() string { return func() string { var result string result = func() string { return "Hello, " + result } return result } }在这个例子中,makeClosure函数返回一个闭包,该闭包可以访问并修改返回的函数的局部变量result。当调用闭包时,它会返回一个字符串,该字符串包含了result的值。
-
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
