0Pricing
Go Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คำสั่ง if และนิพจน์เริ่มต้น
  2. ลูป for: รูปแบบทั้งหมด
  3. คำสั่ง switch ใน Go
  4. break, continue และป้ายกำกับ
← กลับไปที่ Go Academy