Go 数组和指针
Go编程语言或Golang中的指针是一个变量,用于存储另一个变量的内存地址。而数组是固定长度的序列,用于将同类元素存储在内存中。
您可以使用指向数组的指针,并将其作为参数传递给函数。为了理解这个概念,让我们举个实例。在下面的程序中,我们将使用一个包含5个元素的指针数组arr。我们要使用函数更新此数组。意味着在函数内部修改数组(此处的数组为{78,89,45,56,14}),并将在调用者处反映出来。因此,这里我们采用了updatearray函数,该函数具有指向数组的指针作为参数类型。使用updatearray(&arr)代码,我们传递了数组的地址。函数内(*funarr)[4] = 750 或 funarr[4] = 750 代码使用解引用方式给数组赋新值,该值将反映在原始数组中。最后,程序将给出输出[78 89 45 56 750]。
// Golang程序将指针传递给 //数组作为函数的参数 package main import "fmt" //定义个函数 func updatearray(funarr *[5]int) { // 使用索引值更改数组 (*funarr)[4] = 750 //您也可以编写 //上面的代码行 // funarr[4] = 750 } func main() { //获取指向数组的指针 arr := [5]int{78, 89, 45, 56, 14} //将指针传递给数组 //并执行updatearray updatearray(&arr) //更新后的数组 fmt.Println(arr) }
输出:
[78 89 45 56 750]
注意:在Golang中,不建议使用指向数组的指针作为函数的参数,因为代码变得难以阅读。同样,它也不是实现此功能的好方法。为此,您可以使用slice而不是传递指针。
// Golang程式来说明 //使用切片作为函数的参数 package main import "fmt" func updateslice(funarr []int) { //更新值 //在指定的索引处 funarr[4] = 750 } func main() { //定义一个切片 s := [5]int{78, 89, 45, 56, 14} //将切片传递到 //函数updateslice updateslice(s[:]) //显示结果 fmt.Println(s) }
输出:
[78 89 45 56 750]