Đi chuyển Tuyên bố
Tuyên bố chuyển đổi
Sử dụng câu lệnh switch
để chọn một trong nhiều khối mã sẽ được thực thi.
Câu lệnh switch
trong Go tương tự như câu lệnh trong C, C++, Java, JavaScript và PHP. Sự khác biệt là nó chỉ chạy trường hợp trùng khớp nên không cần câu lệnh break
.
Cú pháp chuyển đổi một trường hợp
Cú pháp
switch expression {
case x :
// code block
case y :
// code block
case z :
...
default:
// code block
}
Đây là cách nó hoạt động:
- Biểu thức được đánh giá một lần
- Giá trị của biểu thức
switch
được so sánh với giá trị của từngcase
- Nếu trùng khớp, khối mã liên quan sẽ được thực thi
- Từ khóa
default
là tùy chọn. Nó chỉ định một số mã để chạy nếu không cócase
nào khớp
Ví dụ về công tắc một trường hợp
Ví dụ dưới đây sử dụng số ngày trong tuần để tính tên ngày trong tuần:
Ví dụ
package main
import ("fmt")
func main() {
day := 4
switch day {
case 1:
fmt.Println("Monday")
case 2:
fmt.Println("Tuesday")
case 3:
fmt.Println("Wednesday")
case 4:
fmt.Println("Thursday")
case 5:
fmt.Println("Friday")
case 6:
fmt.Println("Saturday")
case 7:
fmt.Println("Sunday")
}
}
Kết quả:
Thursday
Từ khóa mặc định
Từ khóa default
chỉ định một số mã để chạy nếu không có trường hợp nào khớp:
Ví dụ
package main
import ("fmt")
func main() {
day := 8
switch day {
case 1:
fmt.Println("Monday")
case 2:
fmt.Println("Tuesday")
case 3:
fmt.Println("Wednesday")
case 4:
fmt.Println("Thursday")
case 5:
fmt.Println("Friday")
case 6:
fmt.Println("Saturday")
case 7:
fmt.Println("Sunday")
default:
fmt.Println("Not a weekday")
}
}
Kết quả:
Not a weekday
Tất cả các giá trị case
phải có cùng loại với biểu thức switch
. Ngược lại, trình biên dịch sẽ báo lỗi:
Ví dụ
package main
import ("fmt")
func main() {
a := 3
switch a {
case 1:
fmt.Println("a is one")
case "b":
fmt.Println("a is b")
}
}
Kết quả:
./prog.go:11:2: cannot use "b" (type untyped string) as type int