English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Goプログラミング言語におけるポインタは、他の変数のメモリアドレスを格納する変数です。ポインタは特別な変数であり、どんな型の変数にも指すことができます。基本的には、これはポインタのリンクです。指向指針の指針を定義する場合、最初の指針は第2指針のアドレスを格納します。この概念は時々「ダブルポインタ.
Golangでポインタを宣言する方法について説明します
ポインタをポインタとして宣言するように * 「.通常、私たちがvarキーワードと型宣言をポインタ変数として宣言すると、この操作が完了します。
例1:以下のプログラムでは、ポインタpt2保存pt1ポインタのアドレスをpt2、* pt2がvのアドレス、またはポインタとも言えますpt1の値が** pt2、それでは変数vの値、すなわち100。
package main import "fmt" func main() { //整数型の変数 var V int = 100 //ポインタを取得 //の整数型 var pt1 *int = &V //指しているポインタを取得 //ptに指している1のポインタのアドレスを保存 //pt1をptに変換2 var pt2 **int = &pt1 fmt.Println("変数Vの値は = ", V) fmt.Println("変数Vのアドレスは = ", &V) fmt.Println("pt1pt1) fmt.Println("pt1のアドレスは =1) fmt.Println("pt2pt2) //の値は = //ポインタのポインタ fmt.Println("pt2のアドレスの値は(*pt2) = *pt2) //ダブルポインタは変数Vの値を fmt.Println("*(pt2のアドレスの値は) または **pt2 = ", **pt2) }
出力:
変数Vの値は = 100 変数Vのアドレスは = 0xc000062090 pt1の値は = 0xc000062090 pt1のアドレスは = 0xc00008c018 pt2の値は = 0xc00008c018 pt2のアドレスの値は(*pt2) = 0xc000062090 *(pt2のアドレスの値は) または **pt2 = 100
例2:上記のプログラムにいくつかの変更を行ってみましょう。指針の値を変更するために解引用を使って新しい値を割りり当てる方法を以下のように示します:
// Goプログラムを使って指針が指針を指す概念を説明します package main import "fmt" func main() { // int型の変数を定義 var v int = 100 // 整数型のポインタ var pt1 *int = &v //指しているポインタを取得 //ptに指している1のポインタのアドレスを保存 //pt1をptに変換2 var pt2 **int = &pt1 fmt.Println("変数vの値は = ", v) //vの値を変更するために割り当てを変更 //指針ptに指している1の新値 *pt1 = 200 fmt.Println("変更pt1vに後続して保存される値 = ", v) //vの値を変更するために割り当てを変更 //指針ptに指している2の新値 **pt2 = 300 fmt.Println("変更pt2vに後続して保存される値 = ", v) }
出力:
変数vの値は = 100 ptを変更1vに後続して保存される値 = 200 ptを変更2vに後続して保存される値 = 300
関連情報:Go ポインタ