ホームページ  >  記事  >  バックエンド開発  >  Go におけるスライスとスライス

Go におけるスライスとスライス

王林
王林転載
2024-02-05 23:42:03362ブラウズ

Go におけるスライスとスライス

質問の内容

Go の unsafe.SliceData 関数のドキュメントには、次のように書かれています。 リーリー

&slice[0] ではなく &slice[:1][0] を返す背後にあるロジックは何ですか?私の知る限り (そして私のテストでも確認されています)、どちらも同じアドレスを返します。 Go 開発者が後者ではなく前者を使用することを選択する特別な理由はありますか?


正解


スライスには正の容量 (

cap(slice) > 0) がある可能性がありますが、同時に、 0の長さ。 slice[0] のようにインデックスを作成すると、実行時パニックが発生します。

スライスに正の容量がある場合は、

slice[:1] のようにスライスすると、長さ 1 のスライスが生成され、## のようにスライスできます。 #result[0] これにより、実行時パニックを引き起こすことなく、結果にインデックスが付けられます。 ###例えば:### リーリー これにより、次の結果が得られます:

リーリー

しかし、これはうまくいきます:

リーリー

以上がGo におけるスライスとスライスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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