English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Goプログラミング言語のポインタは、他の変数のメモリアドレスを格納するための変数です。また、変数関数にポインタを渡す方法は2種類あります:
ポインタを作成し、それを関数に渡します
変数のメモリアドレスを渡します
以下のプログラムでは、関数ptf、この関数は整数型ポインタの引数を持っており、この関数はポインタ型の引数のみを受け入れることを示しています。また、この関数は変数を変更しますxの値。最初は、x値を含む100。しかし関数呼び出しの後、値が変更されます748、出力によると、
// Goプログラムはポインタを作成します //それを関数に渡します package main import "fmt" //ポインタを引数として受け入れ func ptf(a *int) { //ポインタの解引用 *a = 748 } func main() { //通常の変数 var x = 100 fmt.Printf("関数呼び出し前のxの値は:%d\n", x) //ポインタ変数を取得します //アドレスを割り当てます var pa *int = &x //以下のように関数を呼び出します //ポインタを関数に渡します ptf(pa) fmt.Printf("関数呼び出し後のxの値は:%d\n", x) }
出力:
関数呼び出し前のxの値は: 100 関数呼び出し後のxの値は: 748
以下のプログラムを考えてみましょう、私たちはポインタを作成して変数を保存していません。xのアドレス、すなわち上記のプログラムのpa。私たちは直接、xのアドレスを関数呼び出しに渡し、その呼び出しは上記の方法に似ています。
package main import "fmt" // int型ポインタを引数として func ptf(a *int) { *a = 748 } func main() { var x = 100 fmt.Printf("関数呼び出し前のxの値は:%d\n", x) //関数を呼び出すことで //アドレスを渡します //変数x ptf(&x) fmt.Printf("関数呼び出し後のxの値は:%d\n", x) }
出力:
関数呼び出し前のxの値は: 100 関数呼び出し後のxの値は: 748
注意:上記のプログラムでは、短い宣言演算子(:=)を使用して変数とポインタを宣言することもできます。