ホームページ  >  記事  >  バックエンド開発  >  スライスが予期しない長さを返します

スライスが予期しない長さを返します

WBOY
WBOY転載
2024-02-09 10:21:29658ブラウズ

スライスが予期しない長さを返します

php エディター Youzi は、スライス操作を使用するときに予期しない長さを返すという問題によく遭遇します。スライス操作はよく使われる配列操作の 1 つで、開始位置と終了位置を指定することで配列の一部の要素を取得できます。ただし、返されたスライスの長さが予想どおりではない場合があります。これは、一般的な間違いや誤解が原因である可能性があります。この記事では、スライス操作中に発生する可能性のある問題を詳しく紹介し、スライス操作をより深く理解し使用するのに役立つ解決策を提供します。

質問内容

私は golang に取り組んでいたのですが、停止してしまい混乱してしまいました。

リーリー

出力は

です リーリー

月のスライスには 12 個の要素がありますが、cap(month)len(month)13 を返します。なぜですか?

解決策

まず、montharray (スライスではなく) であり、その型は [13]string です。その型を見ると、要素 (長さ) が 13 個あり、スライスの型が []string であることがわかります。

配列とスライスのインデックスは 1 からではなく 0 から始まります。インデックス 0 の配列に string 値を指定しなかったため:

リーリー

これは次と同等です:

リーリー

つまり、stringゼロ値 (つまり、空の文字列) が最初の要素として提供されます。

...13 に置き換えていることに注意してください。省略記号は、初期化子に基づいて配列 (型の一部) の長さを推論するようにコンパイラーに指示します。

初期化子として配列リテラルの代わりにスライス リテラルを使用する場合でも:

リーリー

上記と同じ理由により、(この場合はスライス) month の長さは依然として 13 です。

以上がスライスが予期しない長さを返しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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