检查以下示例:
package main
type weburl struct {
url string
}
type responseweburl struct {
contents, index string
}
var urlmap = make(map[string]weburl)
func callurl(ch chan *responseweburl, index, url string, wg *sync.WaitGroup) {
defer wg.Done()
response, err := http.Get(url)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
var responsedata = responseweburl{string(contents), string(index)}
ch <- responsedata
}
}
func main(){
urlmap["google"] = weburl{"http://www.google.com"}
urlmap["facebook"] = weburl{"http://www.facebook.com"}
urlmap["linkedin"] = weburl{"http://www.linkedin.com"}
ch := make(chan *responseweburl)
for index, _ := range urlmap {
fmt.Println("call url " + index)
go callurl(ch, index, urlmap[index].url, wg)
}
}