我正在学习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)