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 关键字。