在控制流程中,我們有時需要跳出當前循環或跳過當前步驟,甚至直接跳轉到指定位置。Go 提供了三種基本跳轉語句:
- ??
break
:跳出當前?for
、switch
?或?select
。 - ??
continue
:跳過本輪循環,進入下一輪。 - ??
goto
:無條件跳轉到標簽處。
一、break
?—— 立即跳出循環或選擇結構
1. 用于循環中
for?i?:=?0;?i?<?10;?i++?{if?i?==?5?{break}fmt.Println(i)
}
輸出:
0
1
2
3
4
2. 用于?switch
?或?select
Go 中的?switch
?默認每個分支自動?break
,你可以顯式使用?break
?提前退出:
switch?x?:=?2;?x?{
case?1:fmt.Println("One")
case?2:fmt.Println("Two")breakfmt.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 | 無條件跳轉到標簽 | 慎用,避免破壞結構性邏輯 |
? 推薦優先使用?
break
?和?continue
,goto
?僅用于特定需求(如資源清理、錯誤處理)。