跳转语句:break、continue、goto -《Go语言实战指南》

简介: 本文介绍了 Go 语言中的三种跳转语句:`break`、`continue` 和 `goto`。`break` 用于跳出当前循环或选择结构,如 `for`、`switch` 和 `select`;`continue` 跳过当前循环的剩余部分并进入下一轮;`goto` 实现无条件跳转到指定标签,但需慎用以保持代码清晰。通过示例代码展示了它们的具体用法,并建议优先使用 `break` 和 `continue`,仅在特定场景(如资源清理)下考虑 `goto`。

 

在控制流程中,我们有时需要跳出当前循环跳过当前步骤,甚至直接跳转到指定位置。Go 提供了三种基本跳转语句:


  • break:跳出当前 forswitchselect
  • continue:跳过本轮循环,进入下一轮。
  • goto:无条件跳转到标签处。

一、break —— 立即跳出循环或选择结构

1. 用于循环中

for i := 0; i < 10; i++ {
    if i == 5 {
        break
    }
    fmt.Println(i)
}

输出:

0
1
2
3
4

2. 用于 switchselect

Go 中的 switch 默认每个分支自动 break,你可以显式使用 break 提前退出:

switch x := 2; x {
case 1:
    fmt.Println("One")
case 2:
    fmt.Println("Two")
    break
    fmt.Println("不会执行")
}

二、continue —— 跳过当前循环,进入下一轮

示例:

for i := 0; i < 5; i++ {
    if i == 2 {
        continue
    }
    fmt.Println(i)
}

输出:

0
1
3
4

注意:i == 2 时跳过了打印。


三、goto —— 无条件跳转

goto 用于直接跳转到代码中的标签,可用于提前退出多层嵌套等场景,但建议慎用,保持代码结构清晰。

基本用法:

i := 0
goto LABEL
i++ // 这行不会执行
LABEL:
fmt.Println("跳转到了这里")

goto 应用场景:提前跳出多层嵌套

func search() {
    for i := 0; i < 3; i++ {
        for j := 0; j < 3; j++ {
            if i == 1 && j == 2 {
                goto FOUND
            }
        }
    }
FOUND:
    fmt.Println("找到了!")
}

四、使用建议与注意事项

跳转语句 用途简述 使用建议
break 退出当前循环、switch、select 推荐用于中断循环
continue 跳过当前循环 推荐用于跳过某些条件分支
goto 无条件跳转到标签 慎用,避免破坏结构性逻辑

✅ 推荐优先使用 breakcontinuegoto 仅用于特定需求(如资源清理、错误处理)。

 

目录
打赏
0
9
9
0
63
分享
相关文章
|
8月前
|
Go
go语言中在 for 循环中使用 break
go语言中在 for 循环中使用 break
145 4
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
本文介绍了如何在 VSCode 中禁用点击 Go 包名时自动打开浏览器跳转到 pkg.go.dev 的功能。通过将 gopls 的 `ui.navigation.importShortcut` 设置为 &quot;Definition&quot;,可以实现仅跳转到定义处而不打开链接。具体操作步骤包括:打开设置、搜索 gopls、编辑 settings.json 文件并保存更改,最后重启 VSCode 使设置生效。
254 9
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
|
8月前
|
go语言在 switch 语句中使用 break
go语言在 switch 语句中使用 break
250 5
|
8月前
|
Go
go语言中的break 语句
go语言中的break 语句
119 3
|
8月前
|
Go
go语言标签化的 break
go语言标签化的 break
90 2
|
8月前
|
Go
go语言中的 跳转语句
【11月更文挑战第4天】
89 4
|
8月前
|
Go
go语言中的goto 语句
go语言中的goto 语句
113 2
|
10月前
|
Go
Go to Learn Go之命令行参数
Go to Learn Go之命令行参数
77 8
|
10月前
|
Go to Learn Go之时间日期
Go to Learn Go之时间日期
93 8
|
10月前
|
Go
Go to Learn Go之Gob
Go to Learn Go之Gob
57 8
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等