packagemain import( "fmt" "time" ) funcmain(){ test_chan1() //test_chan2() } functest_chan1(){ x:=make([]chanint,10) fori:=0;i<10;i++{ x[i]=make(chanint,1) gofunc(xxchanint,iiint){ //do_something() xx<-ii }(x[i],i) } forj:=0;j<10;j++{ fmt.Printf("%v-",<-x[j]) } } functest_chan2(){ x:=make(chanint,10) fori:=0;i<10;i++{ gofunc(xxchanint,iiint){ //do_something() x<-ii }(x,<-x) } } //明显第二种阻塞方式会好一些,因为第一种阻塞方式有阻塞顺序的限制,第二种是没有顺序执行限制的