Go语言通过...语法支持可变参数函数,参数声明为Type...形式,实际传入时自动封装为切片;可变参数须位于参数列表末尾且最多一个,调用时可用slice...展开已有切片。

Go 语言通过 ... 语法支持可变参数(variadic functions),允许函数接收零个或多个同类型参数。关键在于参数声明时使用 Type... 形式,实际传入的参数会被自动封装为一个切片。
语法格式为:func name(args ...Type) { ... }。其中 args 在函数体内是 []Type 类型,可像普通切片一样遍历、切片或传递给其他函数。
args 也不是 nil,而是长度为 0 的空切片slice... 展开后传入(不能直接传切片)以下函数分别演示数值累加和字符串连接:
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
func join(sep string, parts ...string) string {
if len(parts) == 0 {
return ""
}
result := parts[0]
for _, p := range parts[1:] {
result += sep + p
}
return result
}调用方式:
立即学习“go语言免费学习笔记(深入)”;
免费 盛世企业网站管理系统(SnSee)系统完全免费使用,无任何功能模块使用限制,在使用过程中如遇到相关问题可以去官方论坛参与讨论。开源 系统Web代码完全开源,在您使用过程中可以根据自已实际情况加以调整或修改,完全可以满足您的需求。强大且灵活 独创的多语言功能,可以直接在后台自由设定语言版本,其语言版本不限数量,可根据自已需要进行任意设置;系统各模块可在后台自由设置及开启;强大且适用的后台管理支
0
sum(1, 2, 3) → 返回 6
sum() → 返回 0(空切片遍历不执行循环)join("-", "a", "b", "c") → 返回 "a-b-c"
... 展开当参数已存在切片中,需在调用时加 ... 将其元素逐个展开:
nums := []int{10, 20, 30}
fmt.Println(sum(nums...)) // ✅ 正确:展开为 sum(10, 20, 30)
// fmt.Println(sum(nums)) // ❌ 错误:类型不匹配,期望 int,得到 []int这相当于把切片“打散”成独立参数,是 Go 处理批量数据传参的标准做法。
可变参数前可有其他固定参数,常用于指定操作符、分隔符等:
func max(first int, rest ...int) int {
m := first
for _, v := range rest {
if v > m {
m = v
}
}
return m
}调用:max(5, 2, 9, 1) 中 first=5,rest=[]int{2,9,1}。注意此时至少要传一个参数,否则编译报错。
以上就是如何在Golang中使用可变参数函数_传递任意数量参数示例的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号