Avatar ·

Go中的break是只中断switch/select还是也中断外部循环?

大家好!我最近开始学习Go,遇到了`break`语句的意外行为。我有一个`for`循环,里面有一个`switch`。我原以为`case`中的`break`会中断循环,但并没有发生。 以下是我的简化代码示例: ```go package main import "fmt" func main() { for i := 0; i < 5; i++ { switch i { case 2: fmt.Println("找到2,退出循环!") break // 我以为这会中断for default: fmt.Printf("迭代 %d\n", i) } } fmt.Println("循环结束") } ``` 我期望在输出"找到2,退出循环!"后程序结束循环并打印"循环结束"。但实际上程序继续迭代:0、1、"找到2"、3、4,然后才打印"循环结束"。 我了解到在Go中,`break`默认只中断最内层的`switch`、`select`或`for`结构。但我的理解是,如果`break`位于