【问题标题】:calling function with variadic slice in golang [duplicate]在golang中使用可变参数切片调用函数[重复]
【发布时间】:2021-05-19 21:28:24
【问题描述】:

直接来自https://gobyexample.com/variadic-functions

对于这部分 sum(nums...),为什么我不能做 sum(nums) ?我不能只将切片传递给函数吗?

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)

    nums := []int{1, 2, 3, 4}
    sum(nums...)
}

【问题讨论】:

    标签: go


    【解决方案1】:

    您可以将切片传递给接受切片的函数:

    func sumSlice(nums []int) --> takes a slice
    func sumVariadic(nums ...int) --> variadic
    

    不同之处在于,在第一个中,切片头被传递给函数,而在第二个中,切片的各个元素被传递。您可以将它们用作:

    sumSlice([]int{1,2,3})
    sumVariadic(1,2,3)
    

    【讨论】:

      【解决方案2】:

      不,你不能,因为类型不同。必须将... 运算符应用于切片才能将其作为可变参数输入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-07
        • 2012-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多