Hàm bất định trong Golang

Các hàm variadic (hàm bất định) trong Go cho phép bạn truyền một số lượng đối số biến đổi cho một hàm. Tính năng này hữu ích khi bạn không biết trước sẽ truyền bao nhiêu đối số. Một hàm variadic của Golang chấp nhận nhiều đối số cùng loại và có thể được gọi với bất kỳ số lượng đối số nào, bao gồm cả không có.

Hàm bất định trong Golang

package main
import "fmt"

// Hàm Variadic tính tổng
func sum(nums ...int) int {
    total := 0
    for _, n := range nums {
        total += n
    }
    return total
}

func main() {
    fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
    fmt.Println("Sum of 4, 5:", sum(4, 5))
    fmt.Println("Sum of no numbers:", sum())
}

Kết quả:

Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0

Cú pháp:

func functionName(parameters ...Type) ReturnType {
    // Code
}

Trong cú pháp trên:

  • parameters ...Type cho biết hàm có thể chấp nhận một số lượng biến đối số thuộc loại Type.
  • Bạn có thể truy cập các đối số trong hàm dưới dạng một lát cắt.

Dùng hàm Variadic

Khi định nghĩa một hàm variadic, bạn chỉ định loại đối số theo sau là dấu ba chấm (...) như trong ví dụ trên. Bên trong hàm, các đối số này có thể được coi là một lát cắt.

Gọi một hàm variadic

Bạn có thể gọi một hàm variadic với bất kỳ số lượng đối số nào, bao gồm cả số không. Hàm này coi các đối số là một lát cắt.

Ví dụ:

package main
import "fmt"

func sum(nums ...int) int {
    total := 0
    for _, n := range nums {
        total += n
    }
    return total
}

func main() {
    fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
    fmt.Println("Sum of 4, 5:", sum(4, 5))
    fmt.Println("Sum of no numbers:", sum())
}

Kết quả:

Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0

Hàm Variadic với các tham số khác

Bạn cũng có thể kết hợp các tham số variadic với các tham số thông thường trong một hàm. Tham số variadic phải luôn là tham số cuối cùng.

Ví dụ:

package main
import "fmt"

// Hàm Variadic tính tổng
func sum(nums ...int) int {
    total := 0
    for _, n := range nums {
        total += n
    }
    return total
}

// Hàm với tham số thông thường và variadic 
func greet(prefix string, nums ...int) {
    fmt.Println(prefix)
    for _, n := range nums {
        fmt.Println("Number:", n)
    }
}
func main() {
    greet("Sum of numbers:", 1, 2, 3)
    greet("Another sum:", 4, 5)
    greet("No numbers sum:")
}

Kết quả:

Sum of numbers:
Number: 1
Number: 2
Number: 3
Another sum:
Number: 4
Number: 5
No numbers sum:

Hạn chế của hàm Variadic

  • Các hàm variadic chỉ có thể có một tham số variadic và nó phải là tham số cuối cùng.
  • Bạn không thể có nhiều tham số variadic trong một định nghĩa hàm duy nhất.
Thứ Tư, 19/03/2025 09:17
33 👨 208
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