GOLANG-函数的不定参数传递

注意GOLANG函数的不定参数传递:

  当函数的不定参数传递的是切片通过点号拆解的数据时,函数的形参接受的数据将和传递的切片共用底层数组,也就意味着函数内部修改形参的数据,将会影像实参的数据;

  如果将切片的值拆解单独赋值给其它变量,然后将多个变量传递给函数,由函数的形参接收,则可以避免函数内部修改实参的数据;

package main

import "fmt"

func test(num ...int)  {
	num[0] = 12
	fmt.Println("test函数修改后的值:", num)
}

func main() {
	a := []int{1,2,3}
	a1, a2, a3 := a[0], a[1], a[2]
	test(a1, a2, a3)
	fmt.Println(a, a[0])

	fmt.Println("====================================")

	test(a...)
	fmt.Println(a, a[0])
}
/*
test函数修改后的值: [12 2 3]
[1 2 3] 1
====================================
test函数修改后的值: [12 2 3]
[12 2 3] 12
 */

  

  

posted @ 2022-03-29 09:28  青灯浊酒  阅读(298)  评论(0编辑  收藏  举报