数组的值传递
在 go 语言中数组是一个值类型(value type)所有的值类型变量在赋值和作为参数传递时都将产生一次复制动作。
如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制。
因此,在函数体中无法修改传入的数组的内容,因为函数内操作的只是所传入数组的一个副本
func main(){
array := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println("in function main, array values: ", array)
}
func modify(arr []int){
arr[0] = -1
fmt.Println("in function modify, array values: ", arr)
}
in function modify, array values: [-1 2 3 4 5 6 7 8 9]
in function main, array values: [-1 2 3 4 5 6 7 8 9]
func main(){
array := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
fmt.Println("in function main, array values: ", array)
}
func modify(arr [10]int){
arr[0] = -1
fmt.Println("in function modify, array values: ", arr)
}
in function modify, array values: [-1 2 3 4 5 6 7 8 9 10]
in function main, array values: [1 2 3 4 5 6 7 8 9 10]
so how to explain?
Maybe arr []int transfer the address of arr, so the value can be changed, just like c? I guess!