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 */