Go スライスの場合、スライスとスライスの完全な再スライスの違いは何ですか?

PHPz
リリース: 2024-02-14 19:12:10
転載
1008 人が閲覧しました

Go スライスの場合、スライスとスライスの完全な再スライスの違いは何ですか?

php エディタ Xinyi Go 言語では、スライスは必要に応じて動的に拡張できる動的配列です。スライスの完全な再スライスとスライスの違いは、完全な再スライスでは、元のスライスとは異なる容量と長さを持つことができる新しいスライスが作成されることです。スライス間の代入操作では、元のスライスの参照が新しいスライスにコピーされるだけであり、新しいスライスは、基になる配列の記憶構造を元のスライスと共有します。したがって、新しいスライスに変更が加えられると、元のスライスも影響を受けます。これは、スライスとスライスの完全な再スライスとの重要な違いです。

質問内容

スライスとフルスライスの違いはありますか?

スライスを与える s:= make([]byte, 4, 4), copy(s[:], "data")copy(s, "data") には違いがありますか?

これら 2 行のコードは異なる結果を出力しますか?

ソリューション

Go のスライスには 3 つのプロパティがあります:

  • 基礎となる配列
  • スライスの長さ
  • スライス容量

ss[:] は、上記のすべてのプロパティに関して同一です。

Go は実際にはスライスの == 操作を定義しませんが、ss[:] はすべて測定可能なという意味では同じです。性質は等しい。

copy この関数は、最初の 2 つのプロパティのみに焦点を当てます。これらのプロパティは、ss[:] の間で同じです。

以上がGo スライスの場合、スライスとスライスの完全な再スライスの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート