go语言中函数使用不定参数问题
目录
在go语言中,函数也可以使用不定参数,可变参数函数即其参数数量是可变的 —— 0 个或多个。声明可变参数函数的方式是在其参数类型前带上省略符(三个点)前缀。
|
|
输出:
yang yanxing fan fan jie ying
使用起来还是比较简单的,但是这里需要注意一些问题
不定参数只能是最后一个参数
如果在不定参数后面还要定义参数的话就会报错,
can noly use '...' as final argument in list
函数的不定参数在内部是一个定义类型的切片 如上面的数,打印a的类型,这是一个[]string
切片的展开 在使用不定参数的时候,可以传入该类型切片的展开形式,但是如果传入的是展开形式,则其前后就不能再添加参数了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
package main import ( "fmt" "strings" ) func main() { name := []string{"yang","yan","xing"} showName(name...) } func showName(a ...string) { fmt.Println(strings.Join(a," ")) }
如果尝试使用
shwName(name...,"is","a","good man")
或者showName("my name","is",name...)
则报错如果传入的是切片形式的,如果函数内改变切片的值,则会对影响到原切片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
package main import ( "fmt" "strings" ) func main() { name := []string{"yang","yan","xing"} fmt.Println(name) showName(name...) fmt.Println(name) } func showName(a ...string) { a[0] = "fan" a = append(a,"is","a","good","man") fmt.Println(strings.Join(a," ")) }
输出
[yang yan xing] fan yan xing is a good man [fan yan xing]
参数文章 Go 语言“可变参数函数”终极指南

- 文章标题: go语言中函数使用不定参数问题
- 本文链接: https://www.yangyanxing.com/article/func_viriadic_in_go.html
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。