Golang の謎の配列変更: スライスと配列
配列が本質的に参照によって渡される C とは異なり、Go の動作は矛盾しているように見えます。この明らかな矛盾を理解するために、Golang のスライスの世界を詳しく調べてみましょう。
固定長を指定せずに Go で配列を宣言すると、配列はスライスになります。これらのスライスは、基礎となる配列のセクションを指す単なる記述子です。関数に渡されると、ヘッダー (最初の要素、長さ、および容量へのポインター) のみがコピーされます。
したがって、関数内のスライスに加えられた変更は、元のスライスに直接影響します。これは、両方とも同じ基になる配列を参照するためです。 Go では配列自体は明示的に参照によって渡されませんが、この動作は C の参照渡しメカニズムに似ています。
要約すると、Go の違いは配列とスライスの違いに由来します。配列は値によって渡されますが、スライスは基になる配列への参照によって渡されます。スライスの場合、関数内で行われた変更は元のスライスに反映されます。
スライスの詳細についての詳細:
参考関連質問:
以上がGo の配列変更動作は C とどう違うのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。