Golang 如何使用省略号(…)

省略号(…)是Golang中一个特殊的语法符号,通常用于函数或方法的参数列表中。在使用省略号的情况下,函数或方法可以接收不定数量的参数,这使得编写更加通用和灵活的代码变得更加容易。



省略号的基本用法

sum
func sum(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

func main() {
    fmt.Println(sum(1, 2, 3, 4)) // 输出10,即1+2+3+4的结果
}
numsrange

在函数调用中,我们可以传递不定数量的参数,用逗号分隔即可。在上面的例子中,我们传递了4个参数(分别为1、2、3、4),最终函数返回它们的和。

省略号与其他参数的组合使用

省略号可以与其他类型的参数组合使用,包括有名参数和指针类型参数。下面的例子展示了这种情况下的函数定义和调用方法:

func foo(x int, y string, z ...interface{}) {
    fmt.Println(x, y)
    fmt.Println(z...)
}

func main() {
    foo(1, "hello", 2, "world", 3.14)
}
xyzxy...

在函数调用中,我们先传递了两个参数(分别为1和”hello”),接着使用逗号分隔传递了三个不定参数(分别为2、”world”和3.14)。最终函数将打印出1和”hello”作为有名参数的值,以及2、”world”和3.14作为不定参数的值。

另外,在函数中可以同时声明多个至少有一个不定参数的函数:

func bar(x int, y ...int, z bool) {
    // do something
}
y
func main() {
    nums := []int{1, 2, 3}
    fmt.Println(sum(nums...))
}