1 ภาพรวมของคำสั่งเงื่อนไข
คำสั่งเงื่อนไขเป็นเครื่องมือที่สำคัญสำหรับควบคุมการไหลของโปรแกรมในการเขียนโปรแกรม เมื่อเทียบกับภาษาโปรแกรมอื่น ๆ คำสั่งเงื่อนไขใน Golang จะมีลักษณะเฉพาะของตน โดยมีคุณสมบัติในการตัดสินใจ code ที่จะทำงานตามเงื่อนไข true หรือ false ที่ทำให้โค้ดมีความยืดหยุ่นและการบำรุงรักษาได้มากขึ้น
2 คำสั่ง if
2.1 การใช้งานพื้นฐานของคำสั่ง if
คำสั่ง if
เป็นคำสั่งเงื่อนไขที่ง่ายที่สุดในภาษา Go โครงสร้างของมันคือดังนี้:
if เงื่อนไข {
// โค้ดที่จะทำงานเมื่อเงื่อนไขเป็นจริง
}
นี่คือตัวอย่างง่าย ๆ:
package main
import "fmt"
func main() {
x := 10
if x > 5 {
fmt.Println("x มากกว่า 5")
}
}
โค้ดนี้จะตรวจสอบว่า x
มากกว่า 5 และถ้าใช่ ก็จะทำการปริ้นผลลัพธ์ออกมา
2.2 นิพจน์เงื่อนไข
นิพจน์เงื่อนไขประกอบด้วยตัวดำเนินการที่ใช้เปรียบเทียบ (เช่น ==
, !=
, <
, >
, <=
, >=
) และตัวดำเนินการตรรกะ (เช่น &&
(AND), ||
(OR), !
(NOT)) สำหรับตัวอย่างเช่นการตรวจสอบว่าตัวแปรอยู่ในช่วงที่กำหนด:
y := 20
if y >= 10 && y <= 30 {
fmt.Println("y อยู่ระหว่าง 10 และ 30")
}
นิพจน์เงื่อนไขข้างต้นใช้ตัวดำเนินการตรระ &&
เพื่อให้แน่ใจว่าค่าของ y
อยู่ระหว่าง 10 และ 30
2.3 โครงสร้าง if...else และ else if
เมื่อเงื่อนไขของ if
ไม่ได้ตรงกับ เราสามารถใช้ else
เพื่อมีการทำงานแบบสำรองได้ else if
ช่วยให้เรารีบตรวจสอบเงื่อนไขอีกหลาย ๆ รูปแบบ นี่คือตัวอย่าง:
score := 88
if score >= 90 {
fmt.Println("ดีเยี่ยม")
} else if score >= 80 {
fmt.Println("ดี")
} else if score >= 70 {
fmt.Println("ปานกลาง")
} else {
fmt.Println("น้อยกว่าปานกลาง")
โค้ดนี้จะปริ้นผลลัพธ์ที่แตกต่างตามค่าของ score
3 คำสั่ง switch
3.1 โครงสร้างพื้นฐานของ switch
คำสั่ง switch
เป็นคำสั่งแบบสรุปสั้นที่สำเร็จต่อการตรวจสอบค่าหลายค่า โดยมีโครงสร้างพื้นฐานของคำสั่ง switch
ดังนี้:
switch นิพจน์ {
case ค่า1:
// โค้ดที่จะทำงานเมื่อตรงกับค่า1
case ค่า2:
// โค้ดที่จะทำงานเมื่อตรงกับค่า2
default:
// โค้ดที่จะทำงานตามค่าเริ่มต้น
}
หากค่าของ นิพจน์
ตรงกับค่าที่ตามหลัง case
ก็จะทำการทำงานโค้ดที่เกี่ยวข้อง
3.2 switch Fallthrough
ในคำสั่ง switch
ของ Golang แต่ละ branch ไม่ได้ทำการผ่านไปยัง case ถัดไปโดยปกติไม่ว่าจะไม่ยัง่มีการใช้คำสั่ง fallthrough
switch num {
case 1:
fmt.Println("หนึ่ง")
fallthrough
case 2:
fmt.Println("สอง")
default:
fmt.Println("ไม่ใช่หนึ่ง หรือ สอง")
}
ในโค้ดข้างต้น ถ้า num
เป็น 1 จะถึงแม้ตรงกับ case 1
แต่เนื่องจากมีคำสั่ง fallthrough
โปรแกรมก็จะทำงานต่อไปใน case 2
และปริ้น "สอง"
3.3 การแบ่งตามประเภทและการแบ่งแบบกำหนดเอง
คำสั่ง switch
ยังรองรับการแบ่งตามประเภทของตัวแปรที่เรียกว่า type branching นอกจากนี้ เรายังสามารถสร้างเงื่อนไขการแบ่งที่ซับซ้อนมากขึ้นได้
ตัวอย่างของการแบ่งตามประเภท:
var i interface{} = 1
switch i.(type) {
case int:
fmt.Println("i เป็นจำนวนเต็ม")
case float64:
fmt.Println("i เป็น float64")
default:
fmt.Println("i เป็นประเภทอื่น")
}
เงื่อนไขการแบ่งแบบกำหนดเองสามารถเขียนให้ทำการตัดสินใจอย่างสามารถเป็นตัวกำหนดเองตามที่ต้องการ
4 การฝึกปฏิบัติ
ในส่วนนี้ เราจะเข้มงวดความเข้าใจและการใช้คำสั่งเงื่อนไขใน Golang ผ่านตัวอย่างที่เฉพาะเจาะจง ผ่านการฝึกปฏิบัติการเขียนโปรแกรม เราจะเก่งเชี่ยวชาญในการใช้คำสั่ง if
และ switch
เพื่อแก้ปัญหาในชีวิตจริงแบบเอาตัวรอดของเรา
คำนวณเกรด
เรามาเขียนโปรแกรมคำนวณเกรดอย่างง่ายกันดีกว่าครับ โปรแกรมนี้จะกำหนดและแสดงเกรดที่เกี่ยวข้องตามคะแนนที่ผู้ใช้ป้อนเข้ามา ประกาศเกณฑ์การให้เกรดดังนี้:
- A สำหรับคะแนนตั้งแต่ 90 ขึ้นไป
- B สำหรับคะแนนระหว่าง 80 ถึง 89
- C สำหรับคะแนนระหว่าง 70 ถึง 79
- D สำหรับคะแนนระหว่าง 60 ถึง 69
- F สำหรับคะแนนต่ำกว่า 60
เราสามารถใช้ทั้ง if
หรือ switch
statement เพื่อสร้างฟังก์ชันนี้ ก่อนอื่นเรามาดูตัวอย่างโค้ดที่ใช้ if
statement กันก่อน:
package main
import (
"fmt"
)
func main() {
var score int
fmt.Print("กรุณาป้อนคะแนน: ")
fmt.Scan(&score)
if score >= 90 {
fmt.Println("เกรด: A")
} else if score >= 80 {
fmt.Println("เกรด: B")
} else if score >= 70 {
fmt.Println("เกรด: C")
} else if score >= 60 {
fmt.Println("เกรด: D")
} else {
fmt.Println("เกรด: F")
}
}
ในโค้ดนี้เรากำหนดตัวแปร score
เพื่อเก็บคะแนนที่ผู้ใช้ป้อนเข้ามา โดยใช้ fmt.Scan
เพื่อรับค่าจากผู้ใช้ จากนั้นเราใช้ if
และ else if
statements หลายๆ ตัวเพื่อกำหนดเกรดที่เกี่ยวข้องกับคะแนน และใช้ fmt.Println
เพื่อแสดงเกรด
ต่อมาเรามาดูตัวอย่างโค้ดที่ใช้ switch
statement กัน:
package main
import (
"fmt"
)
func main() {
var score int
fmt.Print("กรุณาป้อนคะแนน: ")
fmt.Scan(&score)
switch {
case score >= 90:
fmt.Println("เกรด: A")
case score >= 80:
fmt.Println("เกรด: B")
case score >= 70:
fmt.Println("เกรด: C")
case score >= 60:
fmt.Println("เกรด: D")
default:
fmt.Println("เกรด: F")
}
}
ในตัวอย่างที่ใช้ switch
statement โค้ดมีโครงสร้างที่กระชับและชัดเจนขึ้น เราไม่จำเป็นต้องใช้ if
และ else if
statements ต่อเนื่องหลายตัว แทนที่นั้นเรากำหนดเงื่อนไขในแต่ละ case
หลังจาก switch
เลย คะแนนที่ไม่ตรงกับเงื่อนไขของ case
ก่อนหน้าจะเคลื่อนไปยัง case
ถัดไปโดยอัตโนมัติ จนกระทั่งตรงกับสาขาเงื่อนไขที่เกี่ยวข้องหรือถึง default
case ซึ่งจะแสดงเกรด F
ขอให้ได้รับความรู้และความเข้าใจในการใช้ if
และ switch
สำหรับการตัดสินใจเงื่อนไขแล้วลองเขียนโปรแกรมของคุณเองและฝึกฝนเพื่อเสริมความเข้าใจของคุณ
ในส่วนต่อไป เราจะทำเค้นหาปัญหาที่เป็นประโยชน์เพิ่อช่วยคุณระบุความเข้าใจของคุณในคำสั่งเงื่อนไขใน Golang อีกมากขึ้น
โปรดทราบว่าโค้ดข้างต้นใช้เพื่อเพียงเชิงศึกษาเท่านั้น โดยการใช้ในงานที่เป็นจริง ควรพิจารณาปัจจัยต่างๆ เช่น การโต้ตอบกับผู้ใช้และการจัดการข้อผิดพลาดเพื่อทำให้โปรแกรมเข้มแข็งมากยิ่งขึ้นหรือไม่