gpt4 book ai didi

Go:匿名函数只取范围内的最后一个值

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:10 25 4
gpt4 key购买 nike

我认为这是一个非常简单的修复。只是尝试遍历字符串列表 urls 并在循环迭代时打印出每个 url 。但是当我添加并发(使用 goWaitGroup)时,它打印出的只是列表中的最后一个 url

为什么它只打印出最后一个 url(当从 anon 函数打印时)而不是在循环迭代时单独打印每个 url

去 Playground :http://play.golang.org/p/z4IZLY7Mt_


代码:

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() {
fmt.Println("wrong: " + url)
wg.Done()
}()
}

wg.Wait()
}

最佳答案

这是工作代码:

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()
}

也在 Playground :http://play.golang.org/p/zFSDvfdIDS

关于Go:匿名函数只取范围内的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24681010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com