Go:匿名Func仅获取范围内的最后一个值
我想这是一个相当容易的解决办法。只需尝试在字符串列表url中循环,并在循环迭代时打印出每个url。但当我添加go和WaitGroup并发时,它打印出来的只是列表中的最后一个url 为什么在循环迭代时,从anon函数打印时只打印最后一个url,而不是单独打印每个url 前往游乐场: 代码:Go:匿名Func仅获取范围内的最后一个值,go,Go,我想这是一个相当容易的解决办法。只需尝试在字符串列表url中循环,并在循环迭代时打印出每个url。但当我添加go和WaitGroup并发时,它打印出来的只是列表中的最后一个url 为什么在循环迭代时,从anon函数打印时只打印最后一个url,而不是单独打印每个url 前往游乐场: 代码: 以下是工作代码: package main import ( "fmt" "sync" ) var urls = []string{ "http://google.com",
以下是工作代码:
package main
import (
"fmt"
"sync"
)
var urls = []string{
"http://google.com",
"http://facebook.com",
"http://youtube.com",
"http://yahoo.com",
"http://baidu.com",
"http://wikipedia.org",
"http://twitter.com",
"http://live.com",
"http://amazon.com",
"http://linkedin.com",
"http://google.co.in",
}
func main() {
var wg sync.WaitGroup
for _, url := range urls {
fmt.Println("correct: " + url)
wg.Add(1)
go func(url string) {
fmt.Println("wrong: " + url)
wg.Done()
}(url)
}
wg.Wait()
}
同样在运动场:虽然正确,但这并不是stackoverflow所接受的有用答案,因为它只是指向外部站点的链接。这里的形式是,问题和答案或多或少应该是独立的。
package main
import (
"fmt"
"sync"
)
var urls = []string{
"http://google.com",
"http://facebook.com",
"http://youtube.com",
"http://yahoo.com",
"http://baidu.com",
"http://wikipedia.org",
"http://twitter.com",
"http://live.com",
"http://amazon.com",
"http://linkedin.com",
"http://google.co.in",
}
func main() {
var wg sync.WaitGroup
for _, url := range urls {
fmt.Println("correct: " + url)
wg.Add(1)
go func(url string) {
fmt.Println("wrong: " + url)
wg.Done()
}(url)
}
wg.Wait()
}