---------------------------------------------------------

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是指跳转到指定标签处

————————————————