Go でのスライス: 範囲外エラーの回避
スライスを使用すると、インデックスの範囲を指定して、既存のスライスから新しいスライスを作成できます。 。ただし、指定された範囲が元のスライスの境界を超える場合、境界外エラーが発生する可能性があります。
提供されたコードでは、行 c := b[1:] が新しいスライスを作成しようとします。スライス b からスライス c を取り出します。このエラーは、c の上限インデックス境界が明示的に指定されておらず、デフォルトで b の長さ (0) が設定されているために発生します。
Go におけるスライスの一般的な形式は次のとおりです。
subslice := original[start:end]
開始が省略された場合、デフォルトは 0 になります。終了が省略された場合、デフォルトは len(original) になります。
スライスの場合、インデックスの上限スライスの長さ (len()) ではなく、スライスの容量 (cap()) によって制限されます。これは、cap(original) より大きい終了インデックスを指定しても、それが有効であるとみなされることを意味します。ただし、len(original) より大きい終了インデックスを指定すると、範囲外エラーが発生します。
このエラーを回避するには、指定した範囲が範囲を超えていないことを確認する必要があります。オリジナルのスライス。コード例では、インデックスの上限を明示的に指定することで問題を解決できます。
c := b[1:2]
これにより、インデックス 1 の要素を含む、長さ 1、容量 4 のスライス c が作成されます。スライス b.
以上がGo でスライスする際の範囲外エラーを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。