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 อีกมากขึ้น

โปรดทราบว่าโค้ดข้างต้นใช้เพื่อเพียงเชิงศึกษาเท่านั้น โดยการใช้ในงานที่เป็นจริง ควรพิจารณาปัจจัยต่างๆ เช่น การโต้ตอบกับผู้ใช้และการจัดการข้อผิดพลาดเพื่อทำให้โปรแกรมเข้มแข็งมากยิ่งขึ้นหรือไม่