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

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: 0Cú pháp:
func functionName(parameters ...Type) ReturnType {
// Code
}Trong cú pháp trên:
parameters ...Typecho 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.
Cách dùng hàm bất định trong Golang
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: 0Hà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.
Học IT










Công nghệ
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Hướng dẫn
Ô tô, Xe máy