首页 > 代码库 > Go - 函数/方法 的 变参
Go - 函数/方法 的 变参
变参 本质上就是一个切片。只能接收一个或多个同类型参数,且 必须放在参数列表的 尾部。
func test(s string, a ...int) { fmt.Printf("%T, %v\n", a, a) // 显示类型 和 值}func main() { test("abc", 1, 2, 3, 4)}
输出:
[]int, [1, 2, 3, 4]
将切片作为变参时,须进行 展开操作(后面加“...”)。如果是数组,先将其转换为切片。
func test(a ...int) { fmt.Println(a)}func main() { a := [3]int{10, 20, 30} test(a[:]...)}
既然变参是切片,那么参数复制的仅是切片自身,并不包括底层数组,也因此可修改原数据。如果需要,可用内置函数 copy(), 复制底层数据。
func test(a ...int) { for i := range a { a[i] += 100 }}func main() { a := []int{10, 20, 30} test(a...) fmt.Println(a)}
输出:
[110 120 130]
Go - 函数/方法 的 变参
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。