`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 AdultLư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".
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ợpdefaultđã đượ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!")
}
}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
4Toán tử so sánh và logic
Toán tử so sánh, phần 1Toán tử so sánh, phần 2Toán tử AND logicToán tử OR logicToán tử NOT logicCơ bản về thứ tự ưu tiên của toán tửÔn tập: thực hiện phép so sánh7Luồng điều khiển: vòng lặp
Giải thích vòng lặp `for`Vòng lặp `for` cơ bảnVòng lặp `for` chỉ có điều kiệnTừ khóa `break`Từ khóa `continue`Vòng lặp lồng nhauÔn tập: lặp lại hành động2Biến và các kiểu dữ liệu cơ bản
Biến là gìSuy luận kiểu với `:=`Số nguyên (int)Số dấu phẩy độngGiá trị BooleanChuỗiGiá trị 0Hằng sốQuy ước đặt tênÔn tập: biến và kiểu dữ liệu5Đầu vào/đầu ra cơ bản
Đầu ra có định dạngĐộng từ định dạngIn các kiểu dữ liệuNhận đầu vào cơ bản từ người dùngÔn tập: đầu vào và đầu ra8Hàm
Tìm hiểu về hàmKhai báo hàmGọi hàmTham số của hàmTrả về một giá trịTrả về nhiều giá trịGiá trị trả về có tênNhững điều cơ bản về phạm vi của hàmÔn tập: Tạo code có thể tái sử dụng3Toán tử cơ bản
Toán tử số họcToán tử chiaToán tử moduloToán tử gánToán tử gán kết hợpTăng và giảmÔn tập: Tính toán6Luồng điều khiển: câu lệnh điều kiện
Câu lệnh `if`Từ khóa `else`Từ khóa `else if`Biến bị che khuất trong `if`Khởi tạo biếnCâu lệnh `switch``switch` có biểu thức`switch` không có biểu thứcTừ khóa `fallthrough`Ôn tập: đưa ra quyết địnhTự luyện tập: Trình biên dịch Go online