搜索了golang退出for循环的方法,基本都是围绕 break label 和 goto。我觉得这两种方式都存在在程序里乱跳的缺点。想到了一个用匿名函数的方式,记录一下

匿名函数方式退出for循环

直接上代码

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:=

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

}