栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么Golang在goroutines中对闭包的处理方式不同?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么Golang在goroutines中对闭包的处理方式不同?

Go中的闭包在词法范围内。这意味着闭包内从“外部”范围引用的任何变量都不是副本,而是实际上是引用。一

for
环竟重复使用相同的变量多次,所以你介绍的读/写之间的竞争条件
s
变量。

但是

x
正在分配一个新变量(带有
:=
)并进行复制
s
,这导致每次都是正确的结果。

通常,最佳做法是传递所需的任何参数,以使您没有引用。例:

for _, s := range []string{"foo", "bar"} {    x := s    go func(s string) {        fmt.Printf("s: %sn", s)        fmt.Printf("x: %sn", x)    }(s)}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413092.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号