流程控制
if / else
Go 的 if 无需括号,且可以在条件前执行一条初始化语句,变量作用域限定在该分支内:
Tip
if err := f(); err != nil 是 Go 错误处理的标志性写法。将初始化语句放入 if 中可以收窄变量作用域,减少命名污染。
for:唯一的循环关键字
Go 只有 for 一种循环,通过形式变化覆盖所有场景:
在 range 遍历中,若不需要下标可使用空标识符 _ 忽略:
switch
Go 的 switch 默认每个分支自动 break,不需要显式书写;case 可以是多个值或非常量表达式:
Tip
Go 1.22 起,for range 循环变量在每次迭代中都是新变量,直接在闭包中引用循环变量是安全的;早期版本(≤1.21)则存在变量共享问题。
break / continue 与标签
嵌套循环中,可通过标签跳出外层循环:
goto 在 Go 中存在但极少使用,可读性更好的替代方案是提取函数或使用标签 break/continue。
select:并发中的流程控制
select 是 switch 在通道(channel)上的专用形式,用于多路复用等待,详见并发编程章节。
小结
if支持初始化语句,是错误处理的标准载体。for是唯一循环关键字,配合range遍历集合。switch自动 break,无表达式形式可替代 if/else 链。