搜索了golang退出for循环的方法,基本都是围绕 break label 和 goto。我以为这两种方式都存在在程序里乱跳的缺点。想到了一个用匿名函数的方式,记录一下golang
func main(){ begin := time.Now() ch := make(chan int,4) for i := 1; i < 5; i++ { go worker(ch,i) } time.Sleep(time.Millisecond ) func() { for{ select { case temp:=<-ch: fmt.Println("Read channel : ",temp) default: return } } }() close(ch) duration := time.Since(begin) fmt.Println("Duration: ",duration) time.Sleep(time.Second) } func worker(ch chan int,id int){ fmt.Println("ID:",id,"is sending channel") ch <- id }