我有一个外循环和内循环,每个循环都在一个范围内迭代。我想在内循环中满足条件时退出外循环。
我有一个使用两个“中断”的解决方案,一个在内部循环内,一个在外部循环内,就在内部循环之外(一个非常简化的演示案例):
package main
import (
"fmt"
)
func main() {
word := ""
for _, i := range("ABCDE") {
for _,j := range("ABCDE") {
word = string(i) + string(j)
fmt.Println(word)
if word == "DC" {
break
}
}
if word == "DC" {
break
}
}
// More logic here that needs to be executed
}
这个解决方案没有问题,但对我来说它看起来很丑陋。有一个更好的方法吗?
我可以尝试在之前的解决方案中的外循环之外设置另一个 for 条件循环,并使用标签继续使用标签。但如您所见,这种方法并不比使用 break 的解决方案更优雅。
package main
import (
"fmt"
)
func main() {
word := ""
Exit:
for word != "DC" {
for _, i := range "ABCDE" {
for _, j := range "ABCDE" {
word = string(i) + string(j)
fmt.Println(word)
if word == "DC" {
continue Exit
}
}
}
}
// More logic here that needs to be executed
}
我在这里看到了与其他语言(C、C#、Python 等)有关的类似问题。但我真正感兴趣的是 Go 结构是否有任何技巧,例如“for select”。
原文由 Jay 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用功能
编辑:感谢 @peterSO,他指出了细节中的一些错误并提供了这个游乐场 https://play.golang.org/p/udcJptBW9pQ