次のコラムでは、golang チュートリアル コラムで Go のポインタを紹介します。困っている友人の役に立てば幸いです。
この例と組み合わせて分析します
結果:
次のベースと組み合わせます先ほどのC言語で、なぜ上記の値が現れるのかを絵で説明してください。まず、Go におけるこれら 2 つの演算子が何であるかを確認しましょう。
①次の図に示すように、
var を持つすべての結果について、 a int = 1 は値 1 を持つ変数 a を定義します。
&a は変数の値を格納するアドレス *&a は &a へのポインタ *&a = a = 1 ②すべてbvar の結果 b *int = &aC 言語と同様 int *b = &a 整数変数を指すポインタ b を定義します。b は a## のアドレスを指します。 #So:
b = &a = 0xc04203c1d0
&b = 0xc042058018 &b はポインタ変数 b の実アドレスであり、実行後のものです
*&b = * (&b) = b = &a = 0xc04203c1d0
*b = *&a = a = 1
③c
## によるすべての結果
#上の図に示すように:
var c **int = &b実際には、整数ポインターを指すポインター変数を定義しますc = &b = 0xc042058018*c = *&b = b = &a = 0xc04203c1d0&c は、この変数の実際のアドレスです。ここに示されているのは、操作 0xc042068020の結果です。
* &c 経験を積むと、*& は直接消去されることがわかります = c = 0xc042058018**c 一見すると何のことかわかりませんが、実際には評価できます。変換を通じて**c = **&b = *b = *&a = a = 1***&*&*&*&*&c これは最初に削除できます*& **c = 1 ④xxxxx = *b = *&a = a = 1
について 上記を要約すると、次のようになります。
##&Passed 変数は、最初にアドレス値
&a を取得してアドレスを取得し、次に「* xxx address」で変数の値を取得します。アドレス、つまり a#*& は
をオフセットできます
以上がGo ポインターの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。