Khóa học go

Câu Điều Kiện Switch Case trong Go Lang

0 phút đọc

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 Copy
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ới expression.

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 Copy
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 Copy
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 Copy
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 Copy
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 Copy
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 Copy
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 Copy
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.

Avatar
Được viết bởi

Admin Team

Gợi ý câu hỏi phỏng vấn

Không có dữ liệu

Không có dữ liệu

Gợi ý bài viết
Không có dữ liệu

Không có dữ liệu

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào