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

王林
リリース: 2024-02-05 23:42:03
転載
408 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート