goto 能無條件跳轉至標籤處,語法:
bool done = false;
startPoint:
// do some stuff
if (!done) goto startPoint; // 循環直到 done 為真
為何現代 C++ 棄用 goto?
goto 能做的事,while/do-while/for 結構化迴圈皆可替代且更清晰。goto 顯得多餘。唯一合理場景:從多層巢狀迴循一次跳出(類似緊急逃生窗),但仍建議以 bool 標誌或函數 return 替代。
while (!done) {
bool error = SomeFunction();
if (error) continue; // 錯誤時跳過後續邏輯
// 正常處理邏輯
}
int index = -1;
for (int i = 0; i < numElements; ++i) {
if (myArray[i] == searchNumber) {
index = i;
break; // 找到即停止搜尋
}
}
善用兩者可大幅簡化迴循邏輯,避免深層 if 巢狀。
switch (amountOverSpeedLimit) {
case 0: fine = 0; break;
case 10: fine = 20; break;
case 15: fine = 20; break;
case 20:
case 25:
case 30: fine = amountOverSpeedLimit * 10; break; // 合併 case
default: fine = GoToCourt(); jailTime = GetSentence(); break;
}
case 結尾 必加 break,否則會「貫穿」執行下一個 case(除非刻意利用貫穿合併邏輯)。default 分支不可省略,哪怕只放 break,也能防禦未來擴充漏判。enum、char),不可為浮點數或字串。