Go中可变参数函数用...定义,如sum(numbers...int),支持零个或多个同类型参数;传切片需用nums...展开;多类型可用...interface{}但牺牲类型安全。

在Go语言中,创建可变参数函数(variadic functions)非常简单。这类函数可以接收任意数量的参数,常用于日志打印、格式化输出等场景。通过使用...操作符,你可以定义一个能接受零个或多个同类型参数的函数。
定义可变参数函数
在函数参数列表中,使用...放在参数类型的前面,表示该参数是可变的。例如:
func sum(numbers ...int) int {
total := 0
for _, num := range numbers {
total += num
}
return total
}
这个sum函数可以接收任意数量的int类型参数。调用方式如下:
立即学习“go语言免费学习笔记(深入)”;
fmt.Println(sum()) // 输出: 0
fmt.Println(sum(1)) // 输出: 1
fmt.Println(sum(1, 2, 3, 4)) // 输出: 10
传递切片到可变参数函数
如果你已经有一个切片,并希望将其元素作为参数传入可变参数函数,可以在切片后加上...来展开它:
nums := []int{1, 2, 3, 4, 5}
result := sum(nums...)
fmt.Println(result) // 输出: 15
注意:不能直接将切片传给...int参数,必须使用...操作符展开。
处理多种类型参数
如果需要支持不同类型,可以使用interface{}作为可变参数类型:
func printValues(values ...interface{}) {
for _, v := range values {
fmt.Println(v)
}
}
调用示例:
printValues("hello", 42, 3.14, true)
这种方式灵活但失去了类型安全,建议在必要时才使用。
基本上就这些。Go的varargs机制简洁实用,配合...展开操作,能有效提升函数的通用性。只要记住参数类型统一和切片展开的规则,就能轻松使用。










