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

浙公网安备 33010602011771号