Golang における値渡しと参照渡しの類似点と相違点

WBOY
リリース: 2024-04-12 11:03:01
オリジナル
836 人が閲覧しました

Go 言語で変数を渡すには 2 つの方法があります: 値の受け渡し: 変数のコピーを渡します。元の変数は影響を受けません。参照渡し: 変数のアドレスを渡すと、関数は元の変数にアクセスして変更できます。

Golang における値渡しと参照渡しの類似点と相違点

Go 言語における値の受け渡しと参照の受け渡しの類似点と相違点

Go 言語では、変数を渡すには値の受け渡しと参照の 2 つの方法があります。通過。 2 つの違いはコードを記述するときの動作に影響するため、この 2 つの違いを理解することは非常に重要です。

値による受け渡し

変数が値によって受け渡される場合、変数のコピーが関数またはメソッドに渡されます。これは、元の変数は関数内で行われた変更の影響を受けないことを意味します。

func changeValue(x int) {
    x = 100
}

func main() {
    a := 5
    changeValue(a)
    fmt.Println(a) // 输出 5,因为原始值没有改变
}
ログイン後にコピー

上の例では、changeValue 関数はパラメータとして値 5 を持つ int を受け取ります。このパラメータを変更すると、元の変数ではなく、コピーのみが変更されます。

参照渡し

変数が参照によって渡される場合、変数のアドレスが関数またはメソッドに渡されます。これは、関数が元の変数にアクセスして変更できることを意味します。

ポインタを使用して参照転送を実装します。ポインタ変数には変数のアドレスが格納されます。以下に示すように:

func changeReference(x *int) {
    *x = 100
}

func main() {
    a := 5
    changeReference(&a)
    fmt.Println(a) // 输出 100,因为原始值被修改
}
ログイン後にコピー

この例では、changeReference 関数は整数へのポインタをパラメータとして受け入れます。関数が #x を変更すると、実際には a 変数を指すアドレスが変更され、それによって a の元の値が変更されます。

概要

  • 値の受け渡し: 変数のコピーを渡します。元の変数は関数で行われた変更の影響を受けません。 。
  • 参照渡し: 変数のアドレスを渡すと、関数は元の変数にアクセスして変更できます。

以上がGolang における値渡しと参照渡しの類似点と相違点の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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