break, continue และป้ายกำกับ
ควบคุมลำดับการทำงานของลูปและใช้ break ที่มีป้ายกำกับ
break, continue และป้ายกำกับ เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
พื้นฐานการควบคุมลูป
Go มีคีย์เวิร์ดสามคำสำหรับควบคุมการทำงานของลูป:
break— ออกจากลูปหรือ switch ปัจจุบันcontinue— ข้ามไปยังการวนซ้ำถัดไปgoto— กระโดดไปยังคำสั่งที่มีป้ายกำกับ (พบไม่บ่อย)
ป้ายกำกับช่วยให้ break และ continue ทำงานกับลูปภายนอกได้
break ในลูป
break จะออกจากคำสั่ง for, switch หรือ select ชั้นในสุดทันที:
for i := 0; i < 100; i++ {
if i*i > 50 {
break
}
fmt.Println(i)
}continue
continue จะข้ามส่วนที่เหลือของเนื้อหาลูปปัจจุบัน และกระโดดไปยังคำสั่งหลังลูป (หรือการตรวจสอบเงื่อนไข):
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue // skip even numbers
}
fmt.Println(i) // prints 1,3,5,7,9
}break ที่มีป้ายกำกับ
ป้ายกำกับที่อยู่ก่อนลูป for ช่วยให้คุณออกจากลูปนั้นได้จากภายในลูปภายใน:
search:
for i, row := range grid {
for j, cell := range row {
if cell == target {
fmt.Printf("found at %d,%d\n", i, j)
break search
}
}
}continue ที่มีป้ายกำกับ
continue ที่มีป้ายกำกับจะข้ามไปยังการวนซ้ำถัดไปของลูปภายนอกที่มีป้ายกำกับ:
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if j == 1 {
continue outer
}
fmt.Printf("%d,%d\n", i, j)
}
}ควรใช้ป้ายกำกับเมื่อใด
ป้ายกำกับเหมาะสมเมื่อ:
- ต้องออกจากลูปซ้อนที่อยู่ลึกจากภายใน
- การแยกเป็นฟังก์ชันจะทำให้โค้ดยืดยาวเกินไป
ป้ายกำกับไม่ค่อยพบใน Go — หากพบว่าต้องใช้บ่อย ควรพิจารณาปรับโครงสร้างโค้ดด้วยฟังก์ชันหรือแชนเนล
goto (พบไม่บ่อย)
Go มี goto สำหรับกระโดดไปยังคำสั่งที่มีป้ายกำกับ โดยอนุญาตให้กระโดดได้ภายในฟังก์ชันเดียวกัน และไม่สามารถกระโดดข้ามการประกาศตัวแปร:
- กรณีใช้งาน: โค้ดที่สร้างอัตโนมัติ และลูปจัดการข้อผิดพลาดที่กระชับ
- หลีกเลี่ยงการใช้ในโค้ดที่เขียนด้วยมือ — ควรใช้การควบคุมลำดับการทำงานแบบมีโครงสร้าง
break ใน select
ภายในคำสั่ง select break จะออกจาก select ไม่ใช่ลูป for ภายนอก ให้ใช้ break ที่มีป้ายกำกับเพื่อออกจากลูปภายนอก:
loop:
for {
select {
case msg := <-ch:
handle(msg)
case <-done:
break loop
}
}หลีกเลี่ยงการซ้อนลึก
ลูปที่ซ้อนกันลึกอ่านได้ยาก ก่อนเพิ่ม break ที่มีป้ายกำกับ ให้ถามตนเองว่า:
- สามารถแยกลูปภายในออกเป็นฟังก์ชันช่วยได้หรือไม่
- สามารถใช้แชนเนลหรือสไลซ์เพื่อทำให้การวนซ้ำง่ายขึ้นได้หรือไม่
- การคืนค่าก่อนกำหนดช่วยลดการซ้อนในระดับภายนอกได้หรือไม่
รูปแบบใช้งานจริง: ค้นหาด้วย break
รูปแบบที่พบบ่อย: ค้นหาในชุดข้อมูลและใช้ break เมื่อพบ:
func contains(slice []string, target string) bool {
for _, v := range slice {
if v == target {
return true // prefer return over break+flag
}
}
return false
}คำถามทบทวน
ใน Go คุณจะออกจากลูปภายนอกจากภายในลูปภายในได้อย่างไร
สรุป: break, continue และป้ายกำกับ
ควบคุมลำดับการทำงานของลูปใน Go อย่างมีประสิทธิภาพ:
breakออกจากลูปหรือ switch ปัจจุบันcontinueข้ามไปยังการวนซ้ำถัดไป- ป้ายกำกับช่วยให้
break/continueมุ่งเป้าไปยังลูปภายนอก - มี
gotoให้ใช้ แต่ไม่ค่อยใช้ใน Go ตามแนวทางทั่วไป - ภายใน select ให้ใช้ break ที่มีป้ายกำกับเพื่อออกจากลูป for ภายนอก
หลักสูตรถัดไป: ฟังก์ชันและค่าที่คืนกลับหลายค่า
คำถามที่พบบ่อย
บทเรียน “break, continue และป้ายกำกับ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “break, continue และป้ายกำกับ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “break, continue และป้ายกำกับ”
ควบคุมลำดับการทำงานของลูปและใช้ break ที่มีป้ายกำกับ คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “break, continue และป้ายกำกับ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คำสั่ง if และนิพจน์เริ่มต้น
- ลูป for: รูปแบบทั้งหมด
- คำสั่ง switch ใน Go
- break, continue และป้ายกำกับ