package main import "fmt" func foo2(arr []int) { arr[1]=233 fmt.Println(arr) } func main() { //通过函数传递,可以实现切片引用传递,然后通过append才能添加数据,添加数据后必须返回 var a []int=[]int{3,4,5}
import "fmt"
func foo2(arr []int) {
arr[1]=233
fmt.Println(arr)
}
func main() {
//通过函数传递,可以实现切片引用传递,然后通过append才能添加数据,添加数据后必须返回
var a []int=[]int{3,4,5}
fmt.Println(a)
foo2(a)
fmt.Println(a)
}
结果为:
[3 4 5]
[3 233 5]
[3 233 5]
从上面的例子中,可以看出,通过函数传递切片,能够修改主调函数中切片的值。
但是,对于切片的增加数据操作,则不行。
import "fmt"
func foo2(arr []int) {
arr=append(arr, 4)
fmt.Println(arr)
}
func main() {
//通过函数传递,可以实现切片引用传递,然后通过append才能添加数据,添加数据后必须返回
var a []int=[]int{3,4,5}
fmt.Println(a)
foo2(a)
fmt.Println(a)
}
结果为:
[3 4 5]
[3 4 5 4]
[3 4 5]
通过上面的例子可以得出结论:在函数参数传递的时候,对于切片中值得修改操作时,可以改变切片。但是对切片中的大小,增加数据时,不能改变原切片。这种情形下必须使用返回值进行返回切片,才能得到修改后的切片。