ホームページ  >  記事  >  バックエンド開発  >  golang: スライス間での配列の共有

golang: スライス間での配列の共有

WBOY
WBOY転載
2024-02-09 22:42:09847ブラウズ

golang: スライス間での配列の共有

phpエディターZimoは、この記事でgolangのスライス間での配列共有の知識を紹介します。 golang では、スライスは必要に応じて自動的に拡張できる動的配列です。スライス間の配列共有は golang の非常に重要な機能であり、データをコピーせずに複数のスライスが同じ基礎となる配列を共有できるようになります。これにより、メモリ領域が節約されるだけでなく、パフォーマンスも向上します。次に、スライス間での配列共有の原理と使い方について詳しく説明します。

質問内容

スライスの追加機能について説明します。

上で述べたように、append は更新されたスライスを返します。

これは、新しく作成されたスライスが基礎となる配列を既存のスライスと共有しないことを意味しますか?

mySlice[x:y] などの他のスライス操作の場合、以下に示すように、新しいスライスは基礎となる配列を mySlice と共有します。

PS: テストコード:

リーリー

つまり、この場合、名前には十分な空き容量があります。したがって、追加では新しい基になる配列を作成できません。

出力:

リーリー

出力は共有の基礎となる配列と同じであるべきではないでしょうか?

ここでは非常に基本的なことが間違いなく欠けています。

回避策

おっしゃるとおり、names1names と同じ基になる配列を使用します。

いいえ、names の長さは 4 であり、names1 の長さは 5 であるため、出力は同じではありません。どちらも容量 (10) があることに注意してください。

これを少し明確にする例を次に示します:

リーリー

以上がgolang: スライス間での配列の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。