以下测试代码:
func main() {
lans := [5]string{"java", "python", "erlang", "cpp", "go"}
fin := make(chan bool)
for _, l := range(lans) {
go func() {
fmt.Println(l)
}()
}
<- fin
}
我认为输出将是:java,python,erlang,cpp,go; 但输出是: 去吧去吧 这有什么不对?
答案 0 :(得分:2)
只需编写这样的函数,将动词l
捕获到函数
go func(l string) {
fmt.Println(l)
}(l)