本文主要是介绍Go 语言中Select与for结合使用break,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
func test(){i := 0for {select {case <-time.After(time.Second * time.Duration(2)):i++if i == 5{fmt.Println("break now")break }fmt.Println("inside the select: ")}fmt.Println("inside the for: ")}
}
执行后发现,什么?居然break不出去?后来查了一下资料发现,当for 和 select结合使用时,break语言是无法跳出for之外的,因此若要break出来,这里需要加一个标签,使用goto, 或者break 到具体的位置
解决方法一:使用golang中break的特性,在外层for加一个标签
func test(){i := 0ForEnd:for {select {case <-time.After(time.Second * time.Duration(2)):i++if i == 5{fmt.Println("break now")break ForEnd}fmt.Println("inside the select: ")}fmt.Println("inside the for: ")}
}
解决方法二: 使用goto直接跳出循环
func test(){i := 0for {select {case <-time.After(time.Second * time.Duration(2)):i++if i == 5{fmt.Println("break now")goto ForEnd}fmt.Println("inside the select: ")}fmt.Println("inside the for: ")}ForEnd:
}
如上,成功从坑中走出。
这篇关于Go 语言中Select与for结合使用break的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!