本例子并行地取回几个URL,使用 c
// 构建一个通道
ch := make(chan int)
var urls = []string{
"http://www.golang.org/",
"http://www.google.com/",
"http://www.somestupidname.com/",
}
// 递增 计数器。
index := 0
for _, url := range urls {
// Increment the WaitGroup counter.
// Launch a goroutine to fetch the URL.
// 启动一个Go程来取回URL。
go func(url string) {
// 递增 计数器。
ch <- 1
// 取回URL
http.Get(url)
}(url)
}
// Wait for all HTTP fetches to complete.
// 等待所有的HTTP取回操作完成。
// 遍历接收通道数据
for data := range ch {
// 打印通道数据
fmt.Println(data)
//计数器
index = index + data
// 当遇到数据0时, 退出接收循环
if index == len(urls) {
break
}
}
han进行阻塞,直到所有的取回操作完成。