ホームページ > バックエンド開発 > Golang > Go ポインター: `&` と `*` をいつ使用するか?

Go ポインター: `&` と `*` をいつ使用するか?

Patricia Arquette
リリース: 2024-12-02 08:55:11
オリジナル
178 人が閲覧しました

Go Pointers: When to Use `&` and `*`?

ポインター (& と *) を理解する

Go では、多くの場合、変数を関数の引数として渡す必要があります。ただし、このような操作中にエラーが発生すると、混乱を招く可能性があります。この記事では、& と * ポインターの違いを明確にし、それぞれをいつ使用する必要があるかを説明します。

ポインターとアドレス

ポインターは、別の変数のアドレスを格納する変数です。メモリ。 & 演算子は変数のアドレスを取得します。たとえば、「u」が User 構造体の場合、「&u」は「u」のアドレスを返します。

&

による JSON のデコード& 演算子を理解するには次のコードを考えてみましょう:

var u User

if err := decoder.Decode(&u); err != nil {
    // Code to handle error...
}
ログイン後にコピー

json.Decode 関数は、JSON をデコードするためのポインターを予期します。データを入れます。この例では、「u」は単なるユーザー構造体であり、ポインターではありません。 「&u」を使用することで、関数に「u」のアドレスを指定し、デコードを成功させます。

ポインタとリダイレクト

演算子これは、ポインタのアドレスに格納されている値への「リダイレクト」と考えることができます。たとえば、ポインタ 'x' に 'y' のアドレスが格納されている場合、'x' は 'y' の値を返します。

次のコードを考えてみましょう:

x := new(User) // Creates a pointer to a User struct
*x = y        // Assigns the value of 'y' to the struct pointed to by 'x'
fmt.Println(*x) // Prints the value of 'y'
ログイン後にコピー

使用法の概要

  • & を使用してアドレスを取得します
  • ポインターのアドレスに格納されている値にアクセスするには、* を使用します。
  • ポインター以外では * を使用しないでください。エラーが発生します。

以上がGo ポインター: `&` と `*` をいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート