Menu
CoddyTech

`switch` không có biểu thức

Thuộc phần Kiến thức nền tảng trong hành trình GO của Coddy. Bài học 41 trên 109.

Trong Go, ta có thể dùng câu lệnh switch không có biểu thức sau từ khóa. Cách này hữu ích khi ta muốn đánh giá nhiều điều kiện một cách rõ ràng.

Hãy tạo một chương trình phân loại một người dựa trên tuổi của họ:

age := 25
    
switch {
case age < 13:
    fmt.Println("Child")
case age < 20:
    fmt.Println("Teenager")
case age < 30:
    fmt.Println("Young Adult")
default:
    fmt.Println("Adult")
}

Sau khi chạy đoạn code này, chương trình sẽ kiểm tra lần lượt từng điều kiện trong các case. Vì tuổi của chúng ta là 25, nó không nhỏ hơn 13 hay 20, nhưng nhỏ hơn 30, nên case thứ ba khớp. Văn bản "Young Adult" sẽ hiển thị trên màn hình:

Young Adult

Lưu ý rằng khi không có biểu thức (expression) sau switch, mỗi nhánh case trở thành một điều kiện (condition) boolean, cho kết quả true hoặc false. Nhánh đầu tiên cho kết quả true sẽ chạy khối lệnh của nó.

Nếu không có trường hợp nào khớp, trường hợp default sẽ được thực thi. Trong ví dụ này, nếu tuổi là 35, đầu ra sẽ là "Adult".

challenge icon

Thử thách

Dễ

Trong thử thách này, bạn sẽ luyện tập sử dụng câu lệnh switch không có biểu thức. Loại câu lệnh switch này hữu ích khi bạn muốn kiểm tra nhiều điều kiện mà không lặp lại các câu lệnh if-else.

Mình đã cung cấp biến timeOfDay biểu thị giờ hiện tại (theo định dạng 24 giờ). Nhiệm vụ của bạn là hoàn thành câu lệnh switch không có biểu thức để in ra lời chào phù hợp dựa trên thời điểm trong ngày.

Hãy dùng các khoảng sau và in chính xác những thông báo này:

  • 5 đến 11: Good morning!
  • 12 đến 17: Good afternoon!
  • 18 đến 21: Good evening!
  • mọi giờ khác: Hello! (trường hợp default đã được viết sẵn)

Với timeOfDay = 14, chương trình sẽ in ra Good afternoon!.

Tự làm thử

package main

import "fmt"

func main() {
	// Giá trị này biểu thị giờ hiện tại theo định dạng 24 giờ (0-23)
	timeOfDay := 14 // Đây là 2:00 PM
	
	// TODO: Hoàn thiện câu lệnh (statement) switch không có biểu thức (expression)
	// để in ra lời chào phù hợp với thời điểm trong ngày
	switch {
	// Thêm các nhánh case vào đây
	
	
	
	default:
		fmt.Println("Hello!")
	}
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Go online