這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
select裡面的break是無法退出for語句的。如下;
package mainimport ( "fmt")func main() { var c=make(chan int,1024) quit:=make(chan string,1) c<-1 quit<-"q" for{ select{ case <-c: fmt.Println("here") case <-quit: fmt.Println("quit") break } }}
有幾種方法可以退出for迴圈
1使用goto語句:
package mainimport ( "fmt")func main() { var c=make(chan int,1024) quit:=make(chan string,1) c<-1 quit<-"q" for{ select{ case <-c: fmt.Println("here") case <-quit: fmt.Println("quit") goto forEnd } } forEnd:}
2使用break標籤
package mainimport ( "fmt")func main() { var c=make(chan int,1024) quit:=make(chan string,1) c<-1 quit<-"q" forEnd: for{ select{ case <-c: fmt.Println("here") case <-quit: fmt.Println("quit") break forEnd } }}
3使用return語句
package mainimport ( "fmt")func main() { var c=make(chan int,1024) quit:=make(chan string,1) c<-1 quit<-"q" some(c, quit) fmt.Println("end")}func some(c1 chan int,c2 chan string) { for{ select{ case <-c1: fmt.Println("here") case <-c2: fmt.Println("quit") return } }}