Câu điều kiện switch case
là một cấu trúc điều khiển quan trọng trong Go, cho phép bạn thực hiện các hành động khác nhau dựa trên giá trị của một biểu thức. switch case
cung cấp một cách hiệu quả để thay thế các câu lệnh if else
phức tạp, giúp mã nguồn trở nên dễ đọc và bảo trì hơn. Bài viết này sẽ cung cấp một cái nhìn tổng quan chi tiết về câu điều kiện switch case
trong Go, bao gồm cú pháp, cách sử dụng, và các ví dụ minh họa cụ thể.
Cú Pháp của Câu Điều Kiện Switch Case
Cú pháp cơ bản của câu điều kiện switch case
trong Go như sau:
go
switch expression {
case value1:
// code to be executed if expression == value1
case value2:
// code to be executed if expression == value2
...
default:
// code to be executed if expression does not match any case
}
Trong đó:
expression
là biểu thức được đánh giá.value1
,value2
, ... là các giá trị màexpression
có thể so khớp.default
là khối mã được thực thi nếu không có giá trị nào khớp vớiexpression
.
Ví Dụ Cơ Bản
Dưới đây là một ví dụ cơ bản về cách sử dụng câu điều kiện switch case
trong Go:
go
package main
import "fmt"
func main() {
dayOfWeek := 3
switch dayOfWeek {
case 1:
fmt.Println("Sunday")
case 2:
fmt.Println("Monday")
case 3:
fmt.Println("Tuesday")
case 4:
fmt.Println("Wednesday")
case 5:
fmt.Println("Thursday")
case 6:
fmt.Println("Friday")
case 7:
fmt.Println("Saturday")
default:
fmt.Println("Invalid day")
}
}
Trong ví dụ này, biến dayOfWeek
được so khớp với các giá trị trong các câu lệnh case
. Nếu dayOfWeek
bằng 3, chương trình sẽ in ra "Tuesday".
Switch Không Có Biểu Thức
Trong Go, biểu thức trong câu lệnh switch
là tùy chọn. Nếu không có biểu thức, switch
sẽ được coi là switch true
và mỗi câu lệnh case
sẽ được đánh giá là đúng hoặc sai.
Ví Dụ:
go
package main
import "fmt"
func main() {
numberOfDays := 28
switch {
case numberOfDays == 28:
fmt.Println("It's February")
default:
fmt.Println("Not February")
}
}
Trong ví dụ này, switch
không có biểu thức, do đó nó được coi là switch true
. Câu lệnh case
sẽ được đánh giá là đúng nếu numberOfDays
bằng 28.
Sử Dụng Nhiều Giá Trị trong Một Case
Go cho phép sử dụng nhiều giá trị trong một câu lệnh case
bằng cách tách các giá trị bằng dấu phẩy.
Ví Dụ:
go
package main
import "fmt"
func main() {
month := "January"
switch month {
case "January", "February", "December":
fmt.Println("Winter")
case "March", "April", "May":
fmt.Println("Spring")
case "June", "July", "August":
fmt.Println("Summer")
case "September", "October", "November":
fmt.Println("Autumn")
default:
fmt.Println("Invalid month")
}
}
Trong ví dụ này, các tháng "January", "February", và "December" đều được nhóm lại trong một câu lệnh case
và in ra "Winter".
Sử Dụng Fallthrough
Từ khóa fallthrough
trong Go cho phép chuyển điều khiển đến câu lệnh case
tiếp theo, ngay cả khi biểu thức của câu lệnh case
tiếp theo không khớp.
Ví Dụ:
go
package main
import "fmt"
func main() {
dayOfWeek := 3
switch dayOfWeek {
case 1:
fmt.Println("Sunday")
fallthrough
case 2:
fmt.Println("Monday")
fallthrough
case 3:
fmt.Println("Tuesday")
fallthrough
case 4:
fmt.Println("Wednesday")
fallthrough
case 5:
fmt.Println("Thursday")
fallthrough
case 6:
fmt.Println("Friday")
fallthrough
case 7:
fmt.Println("Saturday")
default:
fmt.Println("Invalid day")
}
}
Trong ví dụ này, nếu dayOfWeek
bằng 3, chương trình sẽ in ra "Tuesday", "Wednesday", "Thursday", "Friday", và "Saturday" do sử dụng từ khóa fallthrough
.
Switch với Biểu Thức Điều Kiện
Go cho phép sử dụng các biểu thức điều kiện trong câu lệnh case
.
Ví Dụ:
go
package main
import "fmt"
func main() {
num := 75
switch {
case num >= 0 && num <= 50:
fmt.Printf("%d is between 0 and 50\n", num)
case num >= 51 && num <= 100:
fmt.Printf("%d is between 51 and 100\n", num)
default:
fmt.Printf("%d is greater than 100\n", num)
}
}
Trong ví dụ này, num
được kiểm tra qua các biểu thức điều kiện trong các câu lệnh case
.
Switch với Khai Báo Ngắn
Go cho phép sử dụng một câu lệnh khai báo ngắn trước biểu thức trong câu lệnh switch
. Biến được khai báo trong câu lệnh này chỉ có phạm vi trong câu lệnh switch
.
Ví Dụ:
go
package main
import "fmt"
func main() {
switch day := 4; day {
case 1:
fmt.Println("Sunday")
case 2:
fmt.Println("Monday")
case 3:
fmt.Println("Tuesday")
case 4:
fmt.Println("Wednesday")
case 5:
fmt.Println("Thursday")
case 6:
fmt.Println("Friday")
case 7:
fmt.Println("Saturday")
default:
fmt.Println("Invalid day")
}
}
Trong ví dụ này, biến day
được khai báo và khởi tạo trong câu lệnh switch
. Biến này chỉ có phạm vi trong câu lệnh switch
.
Switch với Kiểu Dữ Liệu (Type Switch)
Type switch là một dạng đặc biệt của câu lệnh switch
được sử dụng để so sánh kiểu dữ liệu của một biến giao diện (interface).
Ví Dụ:
go
package main
import "fmt"
func main() {
var i interface{} = "hello"
switch v := i.(type) {
case int:
fmt.Printf("Integer: %d\n", v)
case string:
fmt.Printf("String: %s\n", v)
default:
fmt.Printf("Unknown type\n")
}
}
Trong ví dụ này, biến i
được kiểm tra kiểu dữ liệu và in ra thông báo tương ứng.
Kết Luận
Câu điều kiện switch case
là một công cụ mạnh mẽ trong Go, giúp thay thế các câu lệnh if else
phức tạp và làm cho mã nguồn trở nên dễ đọc và bảo trì hơn. Bài viết này đã cung cấp một cái nhìn tổng quan chi tiết về câu điều kiện switch case
trong Go, bao gồm cú pháp, cách sử dụng, và các ví dụ minh họa cụ thể. Hiểu rõ về câu điều kiện switch case
sẽ giúp bạn viết mã Go hiệu quả và dễ bảo trì hơn.