Go – Câu lệnh điều kiện: If, Switch

Các cấu trúc đưa ra quyết định đòi hỏi lập trình viên đưa ra một hoặc nhiều điều kiện để chương trình đánh giá hoặc kiểm tra, đi kèm với nó là một hoặc nhiều câu lệnh được thực hiện nếu câu điều kiện xác định là true, và tùy chọn, các câu lệnh khác sẽ được thực hiện nêu điều kiện là false

Câu lệnh if

Câu lệnh if thường được sử dụng để chỉ định rằng liệu đoạn code này sẽ được thực hiện hay không dựa trên điều kiện truyền vào.

Sau đây là cú pháp của câu lệnh if trong Go

if(Điều_kiện_kiểm_tra) {
	// Code được thực hiện nếu điều kiện kiểm tra là true.
}

Hãy cùng xem ví dụ sau đây

package main
import "fmt"

func main() {
	var x = 25
	if(x % 5 == 0) {
		fmt.Printf("%d is a multiple of 5\n", x)
	}
}

Kết quả

25 is a multiple of 5

Chú ý rằng trong Go bạn có thể không sử dụng dấu ngoặc đơn (), nhưng dấu ngoặc nhọn {} là bắt buộc

var y = -1
if y < 0 {
	fmt.Printf("%d is negative\n", y)
}

Bạn có thể kết hợp nhiều điều kiện với nhau sử dụng toán tử && hoặc ||

var age = 21
if age >= 17 && age <= 30 {
	fmt.Println("My Age is between 17 and 30")
}

Câu lệnh if-Else

Một câu lệnh if có thể kết hợp với một khối else. Một khối else được thực thi nếu câu điều kiện của if được chỉ định là false

if điều_kiện_kiểm_tra {
	// code được thực hiện nếu điều kiện là true
} else {
	// code được thực hiện nếu điều kiện là false
}

Hãy cùng xem ví dụ sau đây

package main
import "fmt"

func main() {
	var age = 18
	if age >= 18 {
		fmt.Println("You're eligible to vote!")
	} else {
		fmt.Println("You're not eligible to vote!")
	}
}

Kết quả

You're eligible to vote!

Chuỗi if-else-if

Câu lệnh if có thể có nhiều phần else if tạo thành một chuỗi các điều kiện như sau

package main
import "fmt"

func main() {
	var BMI = 21.0
	if BMI < 18.5 {
		fmt.Println("You are underweight");
	} else if BMI >= 18.5 && BMI < 25.0 {
		fmt.Println("Your weight is normal");
	} else if BMI >= 25.0 && BMI < 30.0 {
		fmt.Println("You're overweight")
	} else {
		fmt.Println("You're obese")
	}
}

Kết quả

Your weight is normal

if với cậu lệnh viết tắt

Một câu lệnh if trong Go cũng có thể chứa câu lệnh khai báo tắt đứng trước

if n := 10; n%2 == 0 {
	fmt.Printf("%d is even\n", n)
}

Biến được khai báo trong câu lệnh viết tắt chỉ sử dụng bên trong khối if, trong else của nó, hoặc các nhánh else-if

if n := 15; n%2 == 0 {
	fmt.Printf("%d is even\n", n)
} else {
	fmt.Printf("%d is odd\n", n)
}

Chú ý rằng khi bạn sử dụng câu lệnh viết tắt, thì sẽ không thể đặt nó trong ngoặc đơn (), câu lệnh sau đây sẽ đưa ra một lỗi liên quan đến cú pháp

// Bạn không thể sử dụng ngoặc đơn nếu if chứa câu lệnh viết tắt 
if (n := 15; n%2 == 0) { // Cú pháp lỗi

}

Câu lệnh switch

Câu lệnh switch cho phép một biến được kiểm tra xem nó có khớp với giá trị nào trong một danh sách được định nghĩa trước. Mỗi giá trị được gọi trong một case, và biến được chuyển đổi kiểm tra lần lượt qua từng switch case. Nếu khớp thì nó sẽ thực thi một khối code ở trong case

package main
import "fmt"

func main() {
	var dayOfWeek = 6
	switch dayOfWeek {
		case 1: fmt.Println("Monday")
		case 2: fmt.Println("Tuesday")
		case 3: fmt.Println("Wednesday")
		case 4: fmt.Println("Thursday")
		case 5: fmt.Println("Friday")
		case 6: {
			fmt.Println("Saturday")
			fmt.Println("Weekend. Yaay!")
		}
		case 7: {
			fmt.Println("Sunday")
			fmt.Println("Weekend. Yaay!")
		}
		default: fmt.Println("Invalid day")
	}
}

Kết quả

Saturday
Weekend. Yaay!

Go sẽ đánh giá tất cả các switch case từng cái một từ trên xuống dưới cho đến khi thành công thì thôi. Khi một case thành công, nó sẽ chạy đoạn code chỉ định bên trong và sau đó kết thúc (Nó sẽ không kiểm tra các case còn lại nữa).

Nó sẽ hơi khác các ngôn ngữ thông thường như C, C++, Java, chúng ta cần chỉ định rõ ràng bằng các chèn câu lệnh break  để thoát sau khi toàn bộ đoạn code trong case đã được tính toán và kết thúc.

Nếu không có case nào phù hợp thì case mặc định sẽ được chạy.

switch với câu lệnh viết tắt

Giống như if, switch cũng có thể chứa các câu lệnh khai báo tắt đứng trước biểu thức điều kiện. Nên bạn có thể viết lại ví dụ trước như sau

switch dayOfWeek := 6; dayOfWeek {
	case 1: fmt.Println("Monday")
	case 2: fmt.Println("Tuesday")
	case 3: fmt.Println("Wednesday")
	case 4: fmt.Println("Thursday")
	case 5: fmt.Println("Friday")
	case 6: {
		fmt.Println("Saturday")
		fmt.Println("Weekend. Yaay!")
	}
	case 7: {
		fmt.Println("Sunday")
		fmt.Println("Weekend. Yaay!")
	}
	default: fmt.Println("Invalid day")
}

Chỉ có một điểm khác là biến được khai báo tắt và chỉ sử dụng được bên trong khối switch

Kết hợp nhiều switch case

Bạn có thể kết hợp nhiều switch case trong một như sau

package main
import "fmt"

func main() {
	switch dayOfWeek := 5; dayOfWeek {
		case 1, 2, 3, 4, 5:
			fmt.Println("Weekday")
		case 6, 7:
			fmt.Println("Weekend")
		default:
			fmt.Println("Invalid Day")		
	}
}

Kết quả

Weekday

Điều này khá là tiện lợi khi bạn muốn chạy một logic chung cho nhiều trường hợp.

Không sử dụng biểu thức

Trong Go, biểu thức mà chúng ta chỉ định trong câu lệnh switch là không bắt buộc. Câu lệnh switch không có biểu thức là tương đương với switch true. Nó sẽ tính toán từng bước, từng bước một và sẽ thực thi case đầu tiên mà tính toán là true

package main
import "fmt"

func main() {
	var BMI = 21.0 
	switch {
		case BMI < 18.5:
			fmt.Println("You're underweight")
		case BMI >= 18.5 && BMI < 25.0:
			fmt.Println("Your weight is normal")
		case BMI >= 25.0 && BMI < 30.0:
			fmt.Println("You're overweight")
		default:
			fmt.Println("You're obese")	
	}
}

switch không có biểu thức có thể hiểu đơn giản là cách viết chuỗi các if-else-if

 

 

You May Also Like

About the Author: Nguyen Dinh Thuc

Leave a Reply

Your email address will not be published.