美文网首页
Go语言可变参数

Go语言可变参数

作者: 楠小忎 | 来源:发表于2018-08-02 15:22 被阅读6次

可变参数

  • 参数数量可变的函数称为可变参数函数
  • 在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符号"···",这表示该函数会接收任意数量的该类型参数。
func sum(values...int) {
    total := 0
    for _, value := range values {
        total += value
    }
    return total
}
  • 上面的sum函数返回任意个int参数的和。
  • 在函数体中,values被看做是类型为 []int 的切片。sum函数可以接收任意个数量的int参数
fmt.Println(sum())          //"0"
fmt.Println(sum(3))         //"3"
fmt.Println(sum(1,2,3,4))   //"10"
  • 上面的代码中,调用者隐式地创建一个数组,并将原始参数复制到数组中,再把数组的一个切片作为参数传给被调用函数。
  • 如果原始参数已经是切片类型,我们该如何传递给sum?只需要在最后一个参数后加上省略号。
values := []int{1,2,3,4}
fmt.Println(sum(values...))   //"10"
  • 虽然在可变参数函数内部,···int 型参数的行为看起来很像切片类型,但是实际上,可变参数函数和以切片作为参数的函数是不同的。
func f(...int) {}
func g([]int) {}

fmt.Println("%T\n", f)      //"func(...int)"
fmt.Println("%T\n", g)      //"func([]int)" 
  • 可变参数经常被用于格式化字符串

相关文章

  • Go语言可变参数

    可变参数 参数数量可变的函数称为可变参数函数 在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符...

  • Golang的语法糖

    Golang的语法糖 ... Go语言函数中有三个点 ... 表示为可变参数,这是Go的糖衣语法,表示可以接受任...

  • Go语言之可变参数函数

    原文转自公众号:灰子学技术原文链接:https://mp.weixin.qq.com/s/1ZLeWvORqR-M...

  • Go语言中的可变参数

    参考:http://c.biancheng.net/view/60.html 关键点 希望通过下面的关键词,实现目...

  • (四)go语言函数&参数传递

    go语言函数 基本语法 例子 go语言参数传递

  • Lua可变参数

    Lua 函数可以接受可变数目的参数,和 C 语言类似,在函数参数列表中使用...表示函数有可变的参数。 把可变参数...

  • Go 简明教程 三步走 初级篇

    编程,从 Hello World 开始。 Go 变量之随意变 Go常量之不可变 Go 函数定义 "返回参数列表" ...

  • Golang学习笔记-1.13 可变参数函数

    本文系第十三篇Golang语言学习教程 可变参数函数 参数数量可变的函数,称为可变参数函数。最典型的例子就是fmt...

  • C语言----可变参数

    有时,可能会碰到这样的情况,希望函数带有可变数量的参数,而不是预定义数量的参数。C 语言为这种情况提供了一个解决方...

  • C语言可变参数

    要用到的定义和宏 va_list va_start va_arg va_end 具体用法参照下边代码实例 代码实例

网友评论

      本文标题:Go语言可变参数

      本文链接:https://www.haomeiwen.com/subject/vsfsvftx.html