English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 := [5int{78, 89, 45, 56, 14} //配列へのポインタを渡します //並びにupdatearrayを実行します updatearray(&arr) //更新された配列 fmt.Println(arr) }
出力:
[78 89 45 56 750]
注意:Golangでは、配列へのポインタを関数の引数として使用することは推奨されません。なぜなら、コードが読みにくくなるからです。同様に、これはこの機能を実現するのに良い方法でもありません。そのため、スライスを使用してポインタを渡すのではなく、スライスを使用することができます。
// Golangのプログラムを説明します //スライスを使用して関数の引数として package main import "fmt" func updateslice(funarr []int) { //値を更新します //指定されたインデックスで funarr[4] = 750 } func main() { //スライスを定義します s := [5int{78, 89, 45, 56, 14} //スライスを渡します //関数updateslice updateslice(s[:]) //表示結果 fmt.Println(s) }
出力:
[78 89 45 56 750]