在 Go 语言中,函数可以接收可变数量的参数。这通过在参数列表中使用 ...T
语法实现,其中 T
是类型名。
以下是一些示例:
- 传递不定数量的
int
参数:
package main
import (
"fmt"
)
func sum(nums ...int) {
fmt.Print(nums, " ")
total := 0
for _, num := range nums {
total += num
}
fmt.Println(total)
}
func main() {
sum(1, 2)
sum(1, 2, 3)
}
在上述代码中,sum
函数接收一个 int
类型的可变参数。当我们调用 sum
函数时,我们可以传递任意数量的 int
参数。
- 传递不定数量的
string
参数:
package main
import (
"fmt"
)
func join(s ...string) {
fmt.Print(s, " ")
result := ""
for _, str := range s {
result += str
}
fmt.Println(result)
}
func main() {
join("Hello", ", ", "World")
join("Hello", "World")
}
在上述代码中,join
函数接收一个 string
类型的可变参数。当我们调用 join
函数时,我们可以传递任意数量的 string
参数。
- 传递不定数量的任何类型的参数:
package main
import (
"fmt"
)
func printAll(args ...interface{}) {
fmt.Print(args, " ")
for _, arg := range args {
fmt.Print(arg, " ")
}
fmt.Println()
}
func main() {
printAll(1, "Hello", true)
printAll("Hello", true, 1)
}
在上述代码中,printAll
函数接收一个 interface{}
类型的可变参数。interface{}
类型是一个特殊的类型,可以用来表示任何类型的值。当我们调用 printAll
函数时,我们可以传递任意数量的任何类型的参数。
注意:在 Go 语言中,函数只能有一个可变参数,并且它必须是函数签名的最后一个参数。