Lệnh switch trong Go

Golang giống như hầu hết các ngôn ngữ lập trình khác đều có câu lệnh switch. Câu lệnh switch trong Golang cho phép bạn đánh giá một biến hoặc biểu thức theo nhiều trường hợp và thường được sử dụng khi viết nhiều câu lệnh if-else khiến code trông xấu xí và lặp lại.

Cách dùng lệnh Switch trong Golang

Trong Go, câu lệnh switch là câu lệnh rẽ nhánh đa hướng, chỉ đạo thực thi hiệu quả dựa trên giá trị (hoặc kiểu) của một biểu thức. Có hai loại câu lệnh switch chính trong Go:

  • Expression Switch
  • Type Switch

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")
    default:
        fmt.Println("Invalid day")
    }
}

Cú pháp lệnh switch trong Golang

switch optstatement; optexpression {
case expression1:
    // Khối code
case expression2:                                                          # Expression Switch
    // Khối code
default:
    // Khối code
}

switch var := interfaceValue.(type) {
case type1:
    // Khối code
case type2:                                                                    # Type Switch
    // Khối code
default:
    // Khối code
}

Expression Switch

Expression Switch đánh giá một biểu thức và chuyển sang một trường hợp dựa trên giá trị của biểu thức đó. Nếu không có biểu thức nào được cung cấp, switch sẽ mặc định là true.

Cú pháp

switch optstatement; optexpression {
case expression1:
    // Khối code
case expression2:
    // Khối code
default:
    // Khối code
}

optstatement: Câu lệnh tùy chọn (ví dụ: khai báo biến).
optexpression: Biểu thức tùy chọn (nếu bỏ qua, mặc định là true).

Ví dụ với lệnh tùy chọn

Ở đây giới thiệu một câu lệnh tùy chọn khai báo một biến day. Câu lệnh switch sau đó đánh giá day theo nhiều trường hợp khác nhau.

package main
import "fmt"
func main() {
    switch day := 4; 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")
    default:
        fmt.Println("Invalid day")
    }
}

Kết quả:

Thursday

Ví dụ với Expression tùy chọn

Nếu không có biểu thức nào được chỉ định, câu lệnh switch trong Golang sẽ coi biểu thức là đúng. Điều này cho phép chúng ta sử dụng các điều kiện boolean trong các câu lệnh theo trường hợp.

package main
import "fmt"

func main() {
    day := 4

    switch {
    case day == 1:
        fmt.Println("Monday")
    case day == 4:
        fmt.Println("Thursday")
    case day > 5:
        fmt.Println("Weekend")
    default:
        fmt.Println("Invalid day")
    }
}

Kết quả

Thursday

Type Switch

Type Switch được sử dụng để phân nhánh theo kiểu của giá trị giao diện, thay vì giá trị của nó. Điều này đặc biệt hữu ích khi xử lý các biến có kiểu không xác định.

Cú pháp

switch var := interfaceValue.(type) {
case type1:
    // Khối code
case type2:
    // Khối code
default:
    // Khối code
}

Ví dụ:

Ví dụ này sử dụng cùng biến day nhưng được gói trong interface{} để minh họa cho việc chuyển đổi kiểu.

package main
import "fmt"
func main() {
    var day interface{} = 4
    switch v := day.(type) {
    case int:
        switch v {
        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")
        default:
            fmt.Println("Invalid day")
        }
    default:
        fmt.Printf("Unknown type: %T\n", v)
    }
}

Kết quả:

Thursday
Thứ Tư, 12/03/2025 09:29
51 👨 84
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
❖
    Chia sẻ
    Chia sẻ FacebookChia sẻ Twitter
    Đóng