在提到关键字goto
,想必很多人都心有余悸吧,毕竟goto
可是编程语言界破坏代码可读性的罪魁祸首啊!以至于像c/c++
或类 c 的编程语言,都将goto
作为保留关键字,不建议使用,但如果你非要使用,谁人可阻止呢?
1、退出多层循环(使用 goto)
在提到关键字goto
,想必很多人都心有余悸吧,毕竟goto
可是编程语言界破坏代码可读性的罪魁祸首啊!以至于像c/c++
或类 c 的编程语言,都将goto
作为保留关键字,不建议使用,但如果你非要使用,谁人可阻止呢?
然而在go
编程世界里,你大可放心的去用,不必担心代码的可读性之类的。
package main
import (
"fmt"
)
func main() {
var num int = 0 //作为记录值
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
a
if j == 2 {
num = j
goto outLoop
}
}
}
//避免执行 outLoop 标签内 代码a
return
outLoop:
fmt.Printf("跳转到了循环外边,这是 num 的值是:%d\n", num)
}
2、使用 break 跳出循环
Go
当中break
可以结束for
、switch
以及后续将会提到的select
语句,break
也和goto
一样,可以跟上标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的for
、switch
和 select
的代码块上。
package main
import (
"fmt"
)
func main() {
outLoop:
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 3 {
fmt.Println(i, j)
break outLoop
}
}
}
}
3、继续下一次循环(continue)
package main
import (
"fmt"
)
func main() {
outLoop:
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 3 {
fmt.Println(i, j)
continue outLoop
}
}
}
}
代码说明:第 16 行将结束当前循环,开启下一次的外层循环,而不是第 12 行的循环。