-
Go: for循环中的闭包
请看以下代码:func main() { s := []string{"a", "b", "c"} for _, v := range s { go func() { fmt.Println(v) }() } select {} }在Go中,闭包只能以引用形式捕获外部变量。
另外,在上面for循环中,每一次loop,都会更新变量v
因此,在上面这段代码中,执行结果并不确定,且大概率为c c c
Go: for循环中的闭包
请看以下代码:
func main() {
s := []string{"a", "b", "c"}
for _, v := range s {
go func() {
fmt.Println(v)
}()
}
select {}
}
在Go中,闭包只能以引用形式捕获外部变量。
另外,在上面for循环中,每一次loop,都会更新变量v
因此,在上面这段代码中,执行结果并不确定,且大概率为
c
c
c