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]