在 go 语言中,定义可变参数函数的方法是在参数类型前加上 ...,该参数必须是最后一个参数,并在函数内部作为切片处理;例如 func sum(nums ...int) int 函数可用于接收任意数量的整数参数并求和;调用时可以直接传入多个值,如 sum(1, 2, 3),也可以传入一个展开的切片,如 sum(values...);若要合并两个切片后传入,可使用 append(a, b...)...;直接调用 sum() 相当于传入空切片,而 sum(nil...) 则传入 nil 切片,两者在函数内部可能有细微差别;此外,可变参数不仅限于基本类型,也可用于结构体、接口等复杂类型。

在 Go 语言中,可变参数函数是一个非常实用的功能,尤其是在处理不确定数量的输入参数时。你可能已经见过像
fmt.Println(...)

在 Go 中定义一个可变参数函数非常简单,只需要在参数类型前加上
...

举个例子:
立即学习“go语言免费学习笔记(深入)”;
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}你可以这样调用它:

sum(1, 2, 3) // 返回 6 sum(5, 10, 15, 20) // 返回 50
注意:这里的
nums
[]int
既然可变参数在函数内部被当作切片处理,那我们也可以传入一个切片进去,但需要使用
...
比如:
values := []int{10, 20, 30}
result := sum(values...) // 注意这里的 ... 用法如果不加
...
int
反过来也成立:如果你有一个固定数量的参数函数,就不能直接传入一个切片,除非手动解包或者改写函数为可变参数形式。
组合多个参数函数
如果你想把两个切片合并后传给可变参数函数,可以先合并再展开:
a := []int{1, 2}
b := []int{3, 4}
result := sum(append(a, b...)...)传递 nil 或空切片的区别
sum()
sum(nil...)
nil
len(nums)
可变参数不限于基本类型
你也可以用结构体、接口甚至其他切片作为可变参数类型:
func printStrings(strs ...string) {
fmt.Println(strs)
}基本上就这些了。Go 的可变参数虽然简单,但在实际开发中非常常用,尤其是一些工具函数或日志打印相关的场景。只要记住它是以切片为基础实现的,就能灵活运用。
以上就是Golang可变参数函数如何定义 演示...语法在切片中的运用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号