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

คำสั่ง switch ใน Go

switch แบบมีแท็กและไม่มีแท็ก รวมถึง fallthrough

คำสั่ง switch ใน Go เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

พื้นฐานคำสั่ง switch

switch ของ Go มีประสิทธิภาพมากกว่าใน C: โดยปกติจะไม่ทำงานต่อไปยังกรณีถัดไปโดยอัตโนมัติ และแต่ละกรณีสามารถมีได้หลายค่า:

day := "Monday"
switch day {
case "Saturday", "Sunday":
    fmt.Println("Weekend")
default:
    fmt.Println("Weekday")
}

ไม่มีการทำงานต่อไปโดยอัตโนมัติ

ใน Go เนื้อหาของแต่ละ case จะจบการทำงานโดยอัตโนมัติ — ต่างจาก C ที่ต้องเขียน break อย่างชัดเจน:

  • โค้ดอ่านง่ายขึ้นและมีข้อผิดพลาดน้อยลง
  • ใช้ fallthrough อย่างชัดเจนเมื่อต้องการพฤติกรรมแบบ C (พบไม่บ่อย)

switch พร้อมคำสั่งเริ่มต้น

เช่นเดียวกับ if switch ยอมรับคำสั่งเริ่มต้นที่ไม่บังคับ:

switch os := runtime.GOOS; os {
case "linux":
    fmt.Println("Linux")
case "darwin":
    fmt.Println("macOS")
default:
    fmt.Printf("Other: %s\n", os)
}

switch ไร้ป้าย (ทางเลือกแทนสาย if-else)

switch ไร้ป้ายจะไม่มีนิพจน์หลังคีย์เวิร์ด แต่ละ case จะประเมินค่าเป็นบูลีน:

score := 75
switch {
case score >= 90:
    fmt.Println("A")
case score >= 80:
    fmt.Println("B")
case score >= 70:
    fmt.Println("C")
default:
    fmt.Println("F")
}

switch ตามประเภท

switch ตามประเภทจะตรวจสอบประเภทแบบไดนามิกของค่าอินเทอร์เฟซ:

func describe(i interface{}) {
    switch v := i.(type) {
    case int:
        fmt.Printf("int: %d\n", v)
    case string:
        fmt.Printf("string: %s\n", v)
    default:
        fmt.Printf("unknown: %T\n", v)
    }
}

การทำงานต่อไปยัง case ถัดไป

ใช้ fallthrough เพื่อสั่งให้ทำงานต่อในเนื้อหาของ case ถัดไปอย่างชัดเจน โดยไม่สนใจเงื่อนไขของ case นั้น (แทบไม่จำเป็นต้องใช้):

n := 1
switch n {
case 1:
    fmt.Println("one")
    fallthrough
case 2:
    fmt.Println("one or two")
}

หลายค่าในแต่ละ case

ระบุหลายค่าโดยคั่นด้วยจุลภาคภายใน case เดียว:

func isVowel(c byte) bool {
    switch c {
    case 'a', 'e', 'i', 'o', 'u':
        return true
    }
    return false
}

switch เทียบกับ if-else

ให้ใช้ switch เมื่อ:

  • กำลังเปรียบเทียบนิพจน์หนึ่งกับหลายค่า
  • ต้องใช้ switch ตามประเภทเพื่อเลือกการทำงานของอินเทอร์เฟซ
  • ช่วยให้อ่านง่ายกว่าสาย if-else

ให้ใช้ if-else เมื่อเงื่อนไขเป็นนิพจน์บูลีนที่แตกต่างกัน

break ใน switch

หากต้องการออกจาก switch ก่อนกำหนด ให้ใช้ break หากต้องการออกจากลูปภายนอกจากภายใน switch ให้ใช้ break ที่มีป้ายกำกับ:

loop:
for {
    switch input() {
    case "quit":
        break loop  // exits the for loop
    }
}

กรณี default

กรณี default จะทำงานเมื่อไม่มีกรณีอื่นตรงกัน แนวปฏิบัติที่ดี:

  • ใส่ default เสมอเมื่อจัดการชุดค่าที่กำหนดไว้ — เพื่อรองรับค่าที่ไม่คาดคิด
  • วางไว้ด้านล่างเพื่อให้อ่านง่าย
  • ใน switch ตามประเภท ให้ใช้ default เพื่อจัดการประเภทที่ไม่รองรับอย่างเหมาะสม

คำถามทบทวน

ใน Go เมื่อ case ของ switch ตรงกัน จะเกิดอะไรขึ้น — การทำงานจะดำเนินต่อไปยัง case ถัดไปหรือไม่

สรุป: switch ใน Go

switch ของ Go กระชับและมีประสิทธิภาพ:

  • ไม่มีการทำงานต่อไปโดยอัตโนมัติ — ใช้ fallthrough อย่างชัดเจน
  • มีคำสั่งเริ่มต้นสำหรับกำหนดขอบเขตตัวแปรชั่วคราว
  • switch ไร้ป้ายเป็นทางเลือกแทนสาย if-else
  • switch ตามประเภทสำหรับเลือกการทำงานของอินเทอร์เฟซ
  • แต่ละ case มีหลายค่าได้โดยคั่นด้วยจุลภาค

ถัดไป: การควบคุมลูปด้วย break, continue และป้ายกำกับ

คำถามที่พบบ่อย

บทเรียน “คำสั่ง switch ใน Go” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “คำสั่ง switch ใน Go” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “คำสั่ง switch ใน Go”

switch แบบมีแท็กและไม่มีแท็ก รวมถึง fallthrough คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “คำสั่ง switch ใน Go” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม

ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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