`switch` 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 40 trên 109.
Hãy cùng tìm hiểu cách dùng biểu thức trong câu lệnh switch ở Go, cho phép ta đánh giá điều kiện trực tiếp trong từng case.
Đầu tiên, hãy xem cách dùng câu lệnh switch với một điều kiện trong mỗi case để kiểm tra xem một số là số dương, số âm hay số 0:
num := -5
switch {
case num > 0:
fmt.Println("Positive number")
case num < 0:
fmt.Println("Negative number")
default:
fmt.Println("Zero")
}Sau khi chạy đoạn code này, chương trình sẽ hiển thị trên màn hình:
Negative numberLưu ý rằng ta dùng switch { mà không có giá trị theo sau. Điều này có nghĩa là Go sẽ đánh giá từng biểu thức (expression) trong case như một điều kiện (condition) đúng hoặc sai. Vì num là -5, case thứ hai num < 0 cho kết quả đúng, nên "Negative number" sẽ được in ra.
Chúng ta cũng có thể khởi tạo một biến ngay trong câu lệnh switch. Hãy xem cách hoạt động của nó:
switch num := -5; {
case num > 0:
fmt.Println("Positive number")
case num < 0:
fmt.Println("Negative number")
default:
fmt.Println("Zero")
}Sau khi chạy đoạn code này, ta nhận được cùng một kết quả:
Negative numberTrong ví dụ này, chúng ta khai báo và khởi tạo num ngay trong câu lệnh switch. Dấu chấm phẩy phân tách phần khởi tạo với biểu thức switch (ở đây phần biểu thức để trống). Cách này giúp code ngắn gọn hơn mà vẫn giữ nguyên chức năng.
Thử thách
Người mớiswitch đơn giản trong Go. Bạn cần hoàn thành đoạn code để xác định mô tả ngày dựa trên tên ngày bằng câu lệnh switch.Biến
dayName đã được khai báo với giá trị "Wednesday". Nhiệm vụ của bạn là dùng biểu thức switch để gán cho biến description:-
"Start of the week" nếu là thứ Hai-
"Midweek" nếu là thứ Tư-
"Almost weekend" nếu là thứ Sáu-
"Weekend" nếu là thứ Bảy hoặc Chủ nhật-
"Regular day" nếu là ngày khácTự làm thử
// TODO: Viết câu lệnh switch để gán giá trị cho description dựa trên dayName
// Với thứ Hai: "Start of the week"
// Với thứ Tư: "Midweek"
// Với thứ Sáu: "Almost weekend"
// Với thứ Bảy hoặc Chủ nhật: "Weekend"
// Với ngày khác: "Regular day"
// In ra kết quả
fmt.Printf("%s is %s\n", dayName, description)
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