小编Chr*_*ave的帖子

Golang并发问题

我正在学习Golang并发,并编写了一个程序来按顺序显示URL.我希望代码能够返回
http://bing.com * http://google.com*

但它总是返回http:/google.com***.好像变量被覆盖了.因为我正在使用goroutines,我希望它能在同一时间返回两个值.

func check(u string) string {
tmpres := u+"*****"
return tmpres
}

func IsReachable(url string) string {
ch := make(chan string, 1)
go func() { 

    ch <- check(url) 

     }()
select {
case reachable := <-ch:
    // use err and reply
    return reachable
case <-time.After(3* time.Second):
    // call timed out
    return "none"
}
   }



func main() {

var urls = []string{
  "http://bing.com/",
  "http://google.com/",
}

for _, url := range urls {
    go func() {
     fmt.Println(IsReachable(url)) 
     }() …
Run Code Online (Sandbox Code Playgroud)

concurrency go

0
推荐指数
1
解决办法
183
查看次数

标签 统计

concurrency ×1

go ×1