先看代码
package main import ( "strings" "fmt" "time" ) func main() { users:=strings.Split("shenyi,zhangsan,lisi,wangwu",",") ages:=strings.Split("19,21,25,26",",") c1,c2:=make(chan bool),make(chan bool) ret:=make([]string,0) go func() { for _,v:=range users{ <-c1 ret=append(ret,v) time.Sleep(time.Second) c2<-true } }() go func() { for _,v:=range ages{ <-c2 ret=append(ret,v) c1<-true } }() c1<-true fmt.Println(ret) }
打印:
[shenyi]
package main import ( //_ "github.com/go-sql-driver/mysql" "io/ioutil" "net/http" "fmt" ) func main() { url:="https://news.cnblogs.com/n/page/%d/" c:=make(chan map[int][]byte) for i:=1;i<=3;i++{ go func(index int) { url:=fmt.Sprintf(url,index) res,_:=http.Get(url) cnt,_:= ioutil.ReadAll(res.Body) c<-map[int][]byte{index:cnt} if index==3 { close(c) } }(i) } for getcnt:=range c{ for k,v:=range getcnt{ ioutil.WriteFile(fmt.Sprintf("./files/%d",k),v,666) } } }
打印:
。。。。会一直hang住