Go 関数のパラメータの受け渡しには、値の受け渡しと参照の受け渡しの 2 つの方法があります。値による受け渡しはパラメーター値を関数にコピーしますが、呼び出し側の変数には影響しません。参照による受け渡しではパラメーターのメモリ アドレス参照が渡され、関数の変更は呼び出し側の変数に影響します。
Golang 関数パラメータの受け渡しの謎を明らかにする
Go 言語では、関数パラメータの受け渡し方法が重要です。コードの動作は重要です。この記事では、Go 関数のパラメーター受け渡しの背後にあるメカニズムを詳しく掘り下げ、実際の例を通じてその機能を示します。
送信方法
Goにおける関数パラメータの送信方法には値の転送と参照の転送の2つがあります。
値の受け渡し
値の受け渡しとは、パラメーターの値を関数にコピーすることを指します。これは、関数内のパラメーター値を変更しても、関数を呼び出す変数の値には影響しないことを意味します。
func changeValue(a int) { a = 10 } func main() { var a = 5 changeValue(a) fmt.Println(a) // 输出:5 }
この場合、a
のコピーが changeValue
関数に渡されます。関数の変更はローカル コピーにのみ影響し、関数を呼び出す変数は変更されません。
参照渡し
参照渡しとは、パラメータのメモリ アドレスへの参照を渡すことを意味します。これは、関数内のパラメーター値を変更すると、関数を呼び出す変数の値に影響を与えることを意味します。
func changeValue(a *int) { *a = 10 } func main() { var a = 5 changeValue(&a) fmt.Println(a) // 输出:10 }
この場合、&a
には、変数 a
のメモリ アドレスへの参照が渡されます。 changeValue
この関数は、ポインター逆参照を通じて元の変数の値を変更できます。
配信方法の選択
パラメータ配信方法の選択は、次の要素に依存します:
実践的なケース
次は、値による受け渡しと参照による受け渡しの違いを示す実践的なケースです。この場合、
modifySlice は値によって渡されるスライスを受け入れるため、関数内の変更は関数を呼び出す変数には影響しません。また、modifySliceRef
は参照によってスライスを受け入れるため、関数内の変更は呼び出し側関数の変数に影響します。
以上がGolang 関数のパラメータ受け渡しの秘密を明らかにするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。