Golang continue 关键字
最后修改于 2025 年 5 月 7 日
本教程解释了如何在 Go 中使用 continue
关键字。我们将通过实际示例跳过迭代来涵盖循环控制基础知识。
continue
语句会跳过最内层循环的当前迭代。当满足特定条件时,它用于绕过特定的迭代。
在 Go 中,continue
可用于 for 循环和带标签的循环,以实现更复杂的控制流。它通过避免不必要的代码来帮助优化循环。
for 循环中的基本 continue
continue
最简单的用法是在满足条件时跳过迭代。此示例演示了跳过奇数。
package main import "fmt" func main() { for i := 0; i < 10; i++ { if i%2 != 0 { continue } fmt.Println(i) } }
该循环仅打印偶数。当 i
是奇数时,continue
会跳过 print 语句,然后进入下一次迭代。
嵌套循环中的 Continue
continue
仅影响最内层的循环。此示例展示了它在嵌套循环结构中的工作方式。
package main import "fmt" func main() { for i := 0; i < 3; i++ { fmt.Printf("Outer loop iteration %d\n", i) for j := 0; j < 5; j++ { if j == 2 { continue } fmt.Printf(" Inner loop iteration %d\n", j) } } }
当 j
等于 2 时,内层循环会跳过迭代,但外层循环会正常继续。continue 只影响其所在的循环。
带标签的 Continue 语句
Go 支持带标签的 continue 来控制外层循环。此强大功能有助于管理复杂的嵌套循环。
package main import "fmt" func main() { OuterLoop: for i := 0; i < 5; i++ { for j := 0; j < 5; j++ { if i == 2 && j == 2 { continue OuterLoop } fmt.Printf("i=%d, j=%d\n", i, j) } } }
标签 OuterLoop:
标记外层循环。执行时,continue OuterLoop
会跳过当前外层循环的迭代。
range 循环中的 Continue
continue
在 range 循环中的工作方式类似。此示例在跳过特定元素的同时处理切片。
package main import "fmt" func main() { fruits := []string{"apple", "banana", "cherry", "date", "elderberry"} for index, fruit := range fruits { if len(fruit) < 5 { continue } fmt.Printf("%d: %s\n", index, fruit) } }
该循环跳过名称长度小于 5 个字符的水果。continue
会绕过这些元素的 print 语句。
实际示例:数据过滤
此实际示例演示了如何使用 continue
来过滤掉无效数据点进行处理。
package main import "fmt" func main() { temperatures := []float64{22.5, -999, 18.3, -999, 25.7, 19.2} validCount := 0 for _, temp := range temperatures { if temp == -999 { continue } fmt.Printf("Processing temperature: %.1f\n", temp) validCount++ } fmt.Printf("Processed %d valid temperatures\n", validCount) }
该循环跳过无效的温度读数(-999)。continue
语句有助于有效地仅处理有效数据点。
具有复杂条件的 Continue
此示例展示了带有更复杂逻辑条件的 continue
,以展示其灵活性。
package main import "fmt" func main() { for i := 1; i <= 20; i++ { if i%3 == 0 || i%5 == 0 { continue } fmt.Printf("%d ", i) } fmt.Println() }
该循环跳过可被 3 或 5 整除的数字。continue
语句可与任何布尔条件结合使用来控制循环流。
Continue vs break vs return
此示例将 continue
与其他控制流语句进行了对比,以阐明它们的区别。
package main import "fmt" func main() { fmt.Println("Continue example:") for i := 0; i < 5; i++ { if i == 3 { continue } fmt.Println(i) } fmt.Println("\nBreak example:") for i := 0; i < 5; i++ { if i == 3 { break } fmt.Println(i) } fmt.Println("\nReturn example:") for i := 0; i < 5; i++ { if i == 3 { return } fmt.Println(i) } fmt.Println("This won't print due to return") }
continue
跳至下一次迭代,break
退出循环,return
退出整个函数。它们各自服务于不同的目的。
来源
本教程通过各种场景下的循环控制实际示例,涵盖了 Go 中的 continue
关键字。