Go 言語では、関数パラメータを渡す主な方法が 2 つあります。 値の受け渡し: 変数のコピーを渡しても、呼び出し元のコード内の元の変数には影響しません。ポインターの受け渡し: 変数のアドレスを渡すと、関数は呼び出し元のコード内の元の変数を直接変更できます。
Go 言語でのパラメーター受け渡し方法の探索
Go 言語では、関数パラメーターを渡す主な方法は値の受け渡しです。値による受け渡しとは、元の変数そのものではなく、変数のコピーを関数に渡すことを意味します。このメカニズムにより、関数がそれを呼び出すコード内の変数を誤って変更することがなくなります。
値の受け渡し
値の受け渡しでは、=
演算子を使用して変数のコピーを作成します。次のコード ブロックでは、fum()
関数は、引数として n
変数のコピーを受け入れます。
n の値が変更されても、
main() 関数の
n の元の値は影響を受けません。
ポインターの受け渡し
場合によっては、関数を呼び出すコード内の変数を変更する必要がある場合があります。これを実現するために、Go 言語はポインター受け渡しと呼ばれるメカニズムを提供します。ポインターの受け渡しでは、変数のアドレスがコピーではなく関数に渡されます。
func fum(n int) { n += 1 } func main() { n := 10 fum(n) fmt.Println(n) // 输出:10 }
fumP()
関数は変数n へのポインターをパラメーターとして受け取ります。ポインターを渡すことにより、関数はポインター (
*n) を逆参照することで
n 変数を直接変更できます。
実際的なケース
次の文字ソート関数を考えてみましょう:
func fumP(n *int) { // 使用 `*n` 间接访问变量 *n += 1 } func main() { n := 10 fumP(&n) fmt.Println(n) // 输出:11 }
sortChars()
関数は次の文字を使用します。値を渡すと、s スライスのコピーを受け取ります。したがって、コピーを並べ替えても、
main() 関数の
s の元の値には影響しません。
#結論
Go 言語には、値の受け渡しとポインターの受け渡しという 2 つのパラメーター受け渡しメソッドが用意されています。これらの方法を理解することは、偶発的な変数変更を回避し、正しいコード動作を実現するために重要です。
以上がGo言語におけるパラメータの受け渡し方法に関する研究の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。