Từ khóa `fallthrough`
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 42 trên 109.
Trong Go, từ khóa fallthrough cho phép chúng ta tiếp tục thực thi ở case tiếp theo trong câu lệnh switch, ngay cả khi đã tìm thấy kết quả khớp. Hãy cùng tìm hiểu cách hoạt động của từ khóa này.
Trước tiên, hãy tạo một câu lệnh switch đơn giản dùng từ khóa fallthrough để mô tả một số:
num := 15
switch {
case num < 20:
fmt.Print("Less than 20 ")
fallthrough
case num > 10:
fmt.Print("Greater than 10 ")
fallthrough
case num > 0:
fmt.Print("Positive number")
}Sau khi chạy đoạn code này, bạn sẽ thấy cả ba thông báo được in ra màn hình:
Less than 20 Greater than 10 Positive numberĐiều này xảy ra vì trường hợp đầu tiên khớp (15 nhỏ hơn 20), và từ khóa fallthrough buộc Go thực thi cả trường hợp thứ hai. Sau đó, trường hợp thứ hai cũng dùng fallthrough, khiến Go thực thi cả trường hợp thứ ba. Nếu không có fallthrough, chỉ trường hợp đầu tiên khớp được thực thi.
Hãy nhớ rằng fallthrough sẽ thực thi case tiếp theo dù điều kiện của nó đúng hay không. Trong ví dụ của chúng ta, mọi điều kiện đều đúng với số 15, nhưng case tiếp theo vẫn sẽ thực thi ngay cả khi điều kiện của nó sai.
Thử thách
Người mớiTrong thử thách này, bạn sẽ luyện tập cách dùng từ khóa fallthrough trong câu lệnh switch. Từ khóa fallthrough cho phép chương trình tiếp tục thực thi nhánh tiếp theo, ngay cả khi đã tìm thấy nhánh khớp.
Bạn có một biến đại diện cho một ngày trong tuần. Nhiệm vụ của bạn là thêm từ khóa fallthrough vào vị trí thích hợp để chương trình in ra cả 'It's a weekday!' và 'Time to work!' khi ngày đó là 'Monday'.
Tự làm thử
package main
import "fmt"
func main() {
// Một biến (variable) biểu thị một ngày trong tuần
day := "Monday"
// Câu lệnh (statement) switch để kiểm tra ngày
switch day {
case "Monday":
fmt.Println("It's a weekday!")
// TODO: Thêm từ khóa (keyword) fallthrough vào đây để tiếp tục sang case tiếp theo
case "Tuesday", "Wednesday", "Thursday", "Friday":
fmt.Println("Time to work!")
case "Saturday", "Sunday":
fmt.Println("It's the weekend!")
default:
fmt.Println("Invalid day!")
}
}
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