首页 > 文章列表 > Golang 可变参数列表可以接收哪些类型参数?

Golang 可变参数列表可以接收哪些类型参数?

213 2024-12-04

Go中可变参数列表允许函数接受任意数量的参数,存放在切片中。可接受的类型包括基本类型、指针类型、接口类型、切片类型和符合条件的结构体。例如,sum函数计算传递给它的所有整数的和,可变参数列表必须是函数参数列表中的最后参数。

Golang 可变参数列表可以接收哪些类型参数?

Go 中可变参数列表

可变参数列表允许函数接受任意数量的参数。这些参数存储在切片中,以便在函数内部访问。

可以传递给可变参数列表的参数类型

Go 中的可变参数列表可以接收以下类型参数:

  • 任何基本类型(如 intfloat64string
  • 指针类型(如 *int*[]string
  • 接口类型(如 interface{}
  • 切片类型(但需要明确指定元素类型)
  • 其他可变参数列表
  • 结构体(如果结构体的字段类型满足上述类型)

实战案例

考虑以下函数,它计算传递给它的所有整数的和:

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

这个函数可以这样调用:

result := sum(1, 2, 3, 4, 5)
// result 为 15

注意: 可变参数列表必须是函数参数列表中的最后参数。