English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎トレーニング

Golang 控制文

Golang 関数 & メソッド

Golang 枠体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行処理

Golang エラーハンドリング(Error)

Golang その他の雑多な項目

Go ポインタ指し向きポインタ(ダブルポインタ)

Goプログラミング言語におけるポインタは、他の変数のメモリアドレスを格納する変数です。ポインタは特別な変数であり、どんな型の変数にも指すことができます。基本的には、これはポインタのリンクです。指向指針の指針を定義する場合、最初の指針は第2指針のアドレスを格納します。この概念は時々「ダブルポインタ

Golangでポインタを宣言する方法について説明します
ポインタをポインタとして宣言するように * 「.通常、私たちがvarキーワードと型宣言をポインタ変数として宣言すると、この操作が完了します。

例1:以下のプログラムでは、ポインタpt2保存pt1ポインタのアドレスをpt2* pt2vのアドレス、またはポインタとも言えます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 ポインタ