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