【转】golang for select 循环跳出
原文:https://blog.csdn.net/bravezhe/article/details/81674591
---------------------------------------------------------
golang for select 循环跳出
原创墨子哲 发布于2018-08-14 21:10:30 阅读数 4194 收藏
展开
执行以下代码,发现无法跳出for循环:
func SelectTest() {
i := 0
for {
select {
case <-time.After(time.Second * time.Duration(2)):
i++
if i == 5 {
fmt.Println("跳出for循环")
}
}
fmt.Println("for循环内 i=", i)
}
fmt.Println("for循环外")
}
解决办法有两个:
1.使用break:
func SelectTest() {
i := 0
Loop:
for {
select {
case <-time.After(time.Second * time.Duration(2)):
i++
if i == 5 {
fmt.Println("跳出for循环")
break Loop
}
}
fmt.Println("for循环内 i=", i)
}
fmt.Println("for循环外")
}
2.使用goto:
func SelectTest() {
i := 0
for {
select {
case <-time.After(time.Second * time.Duration(2)):
i++
if i == 5 {
fmt.Println("跳出for循环")
goto Loop
}
}
fmt.Println("for循环内 i=", i)
}
Loop:
fmt.Println("for循环外")
}
分析:
使用break lable 和 goto lable 都能跳出for循环;不同之处在于:break标签只能用于for循环,且标签位于for循环前面,goto是指跳转到指定标签处
————————————————
版权声明:本文为CSDN博主「墨子哲」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bravezhe/article/details/81674591