在Go语言中,数组作为函数的参数或返回值是常见的操作。下面我将详细介绍如何在函数之间传递数组,并给出相关的代码示例。
通过值传递数组
默认情况下,数组是通过值传递的。当在函数中传递一个数组时,实际上是传递了该数组的一个副本。这意味着在函数内部对数组的修改不会影响到原始数组。
package main
import "fmt"
func modifyArray(arr [3]int) { arr[0] = 100 fmt.Println("Inside modifyArray:", arr) // [100 2 3] }
func main() { myArray := [3]int{1, 2, 3} modifyArray(myArray) fmt.Println("Outside modifyArray:", myArray) // [1 2 3],原始数组不受影响 }
在上面的代码中,modifyArray
函数接收一个长度为3的整数数组作为参数。在函数内部,我们修改了数组的第一个元素,并打印了修改后的数组。然后在main
函数中,我们创建了一个名为myArray
的数组,并将其传递给modifyArray
函数。可以看到,修改后的数组在modifyArray
函数外部并不生效。
通过引用传递数组
如果你希望在函数内部对数组的修改影响到原始数组,可以使用指针来传递数组。通过传递指向数组的指针,函数可以直接操作原始数组。
package main
import "fmt"
func modifyArray(arr *[3]int) { arr[0] = 100 fmt.Println("Inside modifyArray:", *arr) // [100 2 3] }
func main() { myArray := [3]int{1, 2, 3} modifyArray(&myArray) // 通过指针传递数组 fmt.Println("Outside modifyArray:", myArray) // [100 2 3],原始数组受到影响 }
在上面的代码中,modifyArray
函数接收一个指向长度为3的整数数组的指针。通过使用&
操作符获取数组的地址,我们将指向myArray
的指针传递给函数。在函数内部,我们修改了数组的第一个元素,并打印了修改后的数组。然后在main
函数中,我们打印了修改后的myArray
,可以看到其第一个元素已经被修改为100。