ホームページ > バックエンド開発 > Golang > Go でスライスする際の範囲外エラーを防ぐにはどうすればよいですか?

Go でスライスする際の範囲外エラーを防ぐにはどうすればよいですか?

DDD
リリース: 2024-11-28 15:59:11
オリジナル
267 人が閲覧しました

How Can I Prevent Out-of-Bounds Errors When Slicing in Go?

Go でのスライス: 範囲外エラーの回避

スライスを使用すると、インデックスの範囲を指定して、既存のスライスから新しいスライスを作成できます。 。ただし、指定された範囲が元のスライスの境界を超える場合、境界外エラーが発生する可能性があります。

提供されたコードでは、行 c := b[1:] が新しいスライスを作成しようとします。スライス b からスライス c を取り出します。このエラーは、c の上限インデックス境界が明示的に指定されておらず、デフォルトで b の長さ (0) が設定されているために発生します。

Go におけるスライスの一般的な形式は次のとおりです。

subslice := original[start:end]
ログイン後にコピー
  • start は、新しいスライスの包括的な開始インデックスです。
  • end は、新しいスライスの排他的な終了インデックスです。スライス。

開始が省略された場合、デフォルトは 0 になります。終了が省略された場合、デフォルトは len(original) になります。

スライスの場合、インデックスの上限スライスの長さ (len()) ではなく、スライスの容量 (cap()) によって制限されます。これは、cap(original) より大きい終了インデックスを指定しても、それが有効であるとみなされることを意味します。ただし、len(original) より大きい終了インデックスを指定すると、範囲外エラーが発生します。

このエラーを回避するには、指定した範囲が範囲を超えていないことを確認する必要があります。オリジナルのスライス。コード例では、インデックスの上限を明示的に指定することで問題を解決できます。

c := b[1:2]
ログイン後にコピー

これにより、インデックス 1 の要素を含む、長さ 1、容量 4 のスライス c が作成されます。スライス b.

以上がGo でスライスする際の範囲外エラーを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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