Go 言語で変数を渡すには 2 つの方法があります: 値の受け渡し: 変数のコピーを渡します。元の変数は影響を受けません。参照渡し: 変数のアドレスを渡すと、関数は元の変数にアクセスして変更できます。
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 サイトの他の関連記事を参照してください。