在Go语言中,break
语句用于立即退出循环或 switch
语句。当 break
被执行时,程序会立即跳出最近的 for
、while
(Go 中没有 while
,只有 for
可以模拟 while
)、do-while
循环或 switch
语句,并继续执行紧跟在该结构之后的下一条语句。
基本用法
在
for
循环中使用break
for i := 0; i < 10; i++ { if i == 5 { break // 当i等于5时,跳出循环 } fmt.Println(i) }
在这个例子中,当
i
达到 5 时,break
语句被执行,导致循环提前结束,因此输出将是 0 到 4。在
switch
语句中使用break
Go 语言的
switch
语句默认情况下每个case
执行后会自动break
,所以通常不需要显式地写break
。但是,如果你想在一个case
中执行多个标签(fallthrough),则可以不使用break
。switch value := 3; value { case 1: fmt.Println("Value is 1") case 2: fmt.Println("Value is 2") case 3: fmt.Println("Value is 3") fallthrough case 4: fmt.Println("Fall through to 4") default: fmt.Println("Default case") }
在这个例子中,当
value
是 3 时,不仅会打印 "Value is 3",还会由于fallthrough
的存在而打印 "Fall through to 4"。
标签化的 break
Go 还支持标签化的 break
,这允许你从嵌套的循环或结构中跳出指定的外层循环。通过给外层循环添加一个标签,然后在内层循环中使用带有相同标签的 break
语句来实现这一点。
outerLoop: // 给外层循环打上标签
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 1 {
break outerLoop // 跳出外层循环
}
fmt.Printf("(%d, %d) ", i, j)
}
}
在这个例子中,当 i
和 j
都等于 1 时,break outerLoop
会被执行,从而直接跳出最外层的循环。输出将是 (0, 0) (0, 1) (0, 2)
,因为一旦 i
和 j
都是 1,循环就会停止。
这些就是 Go 语言中 break
语句的基本用法和一些高级特性。希望这能帮助你更好地理解如何在 Go 中使用 break
。