9.1 Go 函数可变数量参数传参

众所周知,Go语言是严格类型语言,而开发的时候又遇到传入参数不定的情况,怎么办?golang 为我们提供了接入多值参数用于解决这个问题。

1、示例:

  1. package main
  2. import "fmt"
  3. func main() {
  4. //multiParam 可以接受可变数量的参数
  5. multiParam("jerry", "herry")
  6. multiParam("php", "mysql", "js")
  7. }
  8. func multiParam(args ...string) {
  9. //接受的参数放在args数组中
  10. for _, e := range args {
  11. fmt.Println(e)
  12. }
  13. }

需要注意的是,可变参数是函数最右边的参数。如

2、示例:

  1. package main
  2. import "fmt"
  3. func main() {
  4. //multiParam 可以接受可变数量的参数
  5. multiParam("jerry", 1)
  6. multiParam("php", 1, 2)
  7. }
  8. func multiParam(name string, args ...int) {
  9. fmt.Println(name)
  10. //接受的参数放在args数组中
  11. for _, e := range args {
  12. fmt.Println(e)
  13. }
  14. }

可以向一个已有的切片加可变参数运算符 ”…“ 后缀的方式将其传入可变参数函数。

3、示例:

  1. package main
  2. import "fmt"
  3. func multiParam(args ...string) {
  4. for _, e := range args {
  5. fmt.Println(e)
  6. }
  7. }
  8. func main() {
  9. names := []string{"jerry", "herry"}
  10. multiParam(names...)
  11. }

它和multiParam(“jerry”, “herry”) 写法是效果一样,只是可变参数传值方法不会创建新的切片,直接使用传递的切片。

links