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]