คำสั่ง goto เป็นคำสั่งกระโดด (jump statement) ที่ทำให้โปรแกรมกระโดดจากจุด goto ไปยังฉลาก (label) ที่กำหนด แม้จะใช้งานได้ แต่โดยทั่วไปไม่แนะนำให้ใช้ เนื่องจากทำให้โค้ดซับซ้อนและยากต่อการอ่านเข้าใจ (Spaghetti code)
ไวยากรณ์ของ goto
goto label;
...
label: statements;
ตัวอย่างการใช้งาน goto
#include <iostream>
using namespace std;
int main() {
int i = 1;
while(1) {
cout << i << "\n";
if(i == 10)
goto OUT;
i++;
}
OUT: cout << "Out of the while loop";
return 0;
}
ผลลัพธ์
1
2
3
4
5
6
7
8
9
10
Out of the while loop
การทำงานของโปรแกรม
- ใช้ลูป
while(1)(ลูปไม่รู้จบ) เพื่อแสดงค่าiทีละค่า - ตรวจสอบด้วย
ifว่าi == 10หรือยัง - ถ้าเป็นจริง ให้กระโดดไปยังฉลาก
OUTเพื่อออกจากลูป - ถ้าเป็นเท็จ ให้เพิ่มค่า
iขึ้น 1 และวนลูปต่อ - หลังกระโดดไป
OUTจะแสดงข้อความ "Out of the while loop"
ข้อควรระวัง
- การใช้
gotoควรจำกัดให้น้อยที่สุด ใช้เฉพาะกรณีที่จำเป็นจริงๆ (เช่น การจัดการข้อผิดพลาดที่ซับซ้อน) - ควรใช้โครงสร้างควบคุมมาตรฐานแทน เช่น
break,continue,returnหรือฟังก์ชันย่อย - โค้ดที่ใช้
gotoมากเกินไปจะยากต่อการบำรุงรักษาและดีบัก