我有一个外循环和内循环,每个循环都在一个范围内迭代.当内部循环满足条件时,我想退出外部循环.
我有一个解决方案,它使用两个"Break",一个在内循环内,另一个在外循环内,就在内循环之外(这是一个非常简单的演示用例):
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
}
这个解决方案没有问题,但在我看来,它只是打了补丁,很难看.有更好的方法吗?
在前面的解决方案中,我可以try 在外部循环之外使用另一个for条件循环,并创建一个标签,然后对该标签使用Continue.但是正如您所看到的,这种方法并不比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".