go语言可变数量的参数是不是只能是一种类型

// 可变数量的参数
// more 对应 []int 切片类型
func Sum(a int, more ...int) int {
    for _, v := range more {
        a += v
    }
    return a
}

这个more里面的内容是不是只能是int?

阅读 1.7k
2 个回答

more 定义成 interface,Sum函数内部用类型断言判断一下

package main

import (
    "fmt"
    "strconv"
)

func main() {
    a := 0
    result := Sum(a, 1, 2, "3", 4, "5")
    fmt.Println(result)
}

func Sum(a int, more ...interface{}) int {
    for _, v := range more {
        switch  v.(type) {
            case int:
                a += v.(int)
            case string:
                strnum := v.(string)
                num, _ := strconv.Atoi(strnum)
                a += num
        }
    }
    return a
}

golang 暂时不支持泛型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题