Go編程語言或Golang中的指針是一個(gè)變量,用于存儲另一個(gè)變量的內(nèi)存地址。而數(shù)組是固定長度的序列,用于將同類元素存儲在內(nèi)存中。
您可以使用指向數(shù)組的指針,并將其作為參數(shù)傳遞給函數(shù)。為了理解這個(gè)概念,讓我們舉個(gè)實(shí)例。在下面的程序中,我們將使用一個(gè)包含5個(gè)元素的指針數(shù)組arr。我們要使用函數(shù)更新此數(shù)組。意味著在函數(shù)內(nèi)部修改數(shù)組(此處的數(shù)組為{78,89,45,56,14}),并將在調(diào)用者處反映出來。因此,這里我們采用了updatearray函數(shù),該函數(shù)具有指向數(shù)組的指針作為參數(shù)類型。使用updatearray(&arr)代碼,我們傳遞了數(shù)組的地址。函數(shù)內(nèi)(*funarr)[4] = 750 或 funarr[4] = 750 代碼使用解引用方式給數(shù)組賦新值,該值將反映在原始數(shù)組中。最后,程序?qū)⒔o出輸出[78 89 45 56 750]。
// Golang程序?qū)⒅羔槀鬟f給 //數(shù)組作為函數(shù)的參數(shù) package main import "fmt" //定義個(gè)函數(shù) func updatearray(funarr *[5]int) { // 使用索引值更改數(shù)組 (*funarr)[4] = 750 //您也可以編寫 //上面的代碼行 // funarr[4] = 750 } func main() { //獲取指向數(shù)組的指針 arr := [5]int{78, 89, 45, 56, 14} //將指針傳遞給數(shù)組 //并執(zhí)行updatearray updatearray(&arr) //更新后的數(shù)組 fmt.Println(arr) }
輸出:
[78 89 45 56 750]
注意:在Golang中,不建議使用指向數(shù)組的指針作為函數(shù)的參數(shù),因?yàn)榇a變得難以閱讀。同樣,它也不是實(shí)現(xiàn)此功能的好方法。為此,您可以使用slice而不是傳遞指針。
// Golang程式來說明 //使用切片作為函數(shù)的參數(shù) package main import "fmt" func updateslice(funarr []int) { //更新值 //在指定的索引處 funarr[4] = 750 } func main() { //定義一個(gè)切片 s := [5]int{78, 89, 45, 56, 14} //將切片傳遞到 //函數(shù)updateslice updateslice(s[:]) //顯示結(jié)果 fmt.Println(s) }
輸出:
[78 89 45 56 750]