70

我想知道是否有一种方法可以在 Go 中为未知数量的变量定义一个函数。

像这样的东西

func Add(num1... int) int {
    return args
}

func main() {
    fmt.Println("Hello, playground")
    fmt.Println(Add(1, 3, 4, 5,))
}

我想Add为任意数量的输入概括该函数。

4

3 回答 3

101

据我所知,你已经明白了,但语法是...int. 见规格

给定函数和调用

func Greeting(prefix string, who ...string)
Greeting("hello:", "Joe", "Anna", "Eileen")

在问候语中,who将具有价值[]string{"Joe", "Anna", "Eileen"}

于 2013-10-08T02:47:39.957 回答
6

使用可变参数时,您需要在函数内的数据类型中使用循环。

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

func main() {
    fmt.Println("Hello, playground")
    fmt.Println(Add(1, 3, 4, 5,))
}
于 2016-01-29T19:31:49.443 回答
2

Golang 有一个非常简单的可变参数函数声明

可以使用任意数量的尾随参数调用可变参数函数。例如,fmt.Println是一个常见的可变参数函数。

这是一个将任意数量的int' 作为参数的函数。

package main

import (
    "fmt"
)

func sum(nums ...int) {
    fmt.Println(nums)
    for _, num := range nums {
        fmt.Print(num)
    }
}

func main() {
    sum(1, 2, 3, 4, 5, 6)
}

上述程序的输出:

[1 2 3 4 5 6]

1 2 3 4 5 6

于 2018-10-17T05:40:32.030 回答