ホームページ >バックエンド開発 >Golang >golang リファレンスとポインタの違い

golang リファレンスとポインタの違い

(*-*)浩
(*-*)浩オリジナル
2019-12-27 13:35:119523ブラウズ

golang リファレンスとポインタの違い

C や C などの一部の言語はポインターをサポートしています。 C、Java、Python、Ruby、Perl、PHP などの他の言語はすべて引用をサポートしています。表面的には、参照とポインタは非常によく似ており、どちらも 1 つの変数から別の変数へのアクセスを可能にするために使用されます。 (推奨学習: go

両方とも同じ機能の多くを提供するため、それぞれの内部メカニズムがどのように異なるかは不明です。この記事では、ポインタと参照の違いについて説明します。

これが重要な理由

ポインタは Go 言語の中核です。 ほとんどのプログラマーは、上記の言語のいずれかをベースに Go を学習します。したがって、ポインターと参照の違いを理解することは、Go を理解する上で非常に重要です。

ポインターを持つ言語を使用したことがあっても、Go のポインターの実装は C や C とは異なります。これは、ポインターの機能を保持しながら、参照の優れたプロパティの一部も保持しているためです。

この記事の残りの部分は、特定の実装ではなく、参照の概念を広く説明することを目的としています。ポインターのリファレンス実装として Go を使用します。 #########違いはなんですか?

ポインタ変数には、別の変数のアドレスが格納されます。

参照変数は別の変数を指します。

私たちの主張を証明するために、ポインターと参照の両方をサポートする C を例として使用します。

int i = 3;2int *ptr = &i;3int &ref = i;

最初の行は変数 i を定義し、2 行目は変数 i のメモリ アドレスを指すポインタ ptr を定義し、3 行目は変数 i を指す参照 ref を定義します。

演算子が異なるだけでなく、使用されるメソッドも異なります。ポインターの場合、逆参照するには * 演算子を使用する必要があります。参照の場合、演算子は必要ありません。変数を引用符で囲んで使用する傾向があることがわかります。

例を続けると、次の 2 行のコードは両方とも i の値を 13 に変更します。

ptr = 13;
ref = 13;

逆参照を使用せずに変数 ptr に直接アクセスしようとすると、疑問に思うかもしれません。これにより、ポインターと参照の 2 番目の重要な違いがわかります。ポインタは再割り当てできますが、参照は再割り当てできません。つまり、ポインタに別のアドレスを割り当てることができます。

以上がgolang リファレンスとポインタの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。