ホームページ バックエンド開発 Golang golang エラーの解決方法: パニック: ランタイム エラー: インデックスが範囲外です

golang エラーの解決方法: パニック: ランタイム エラー: インデックスが範囲外です

Aug 19, 2023 am 09:28 AM
golang エラーを報告する 解決する

如何解决golang报错:panic: runtime error: index out of range

Golang エラーを解決する方法: パニック: 実行時エラー: インデックスが範囲外です

Golang プログラミングを使用する過程で、いくつかのエラーが頻繁に発生します。エラーは「パニック: 実行時エラー: インデックスが範囲外です」が一般的です。このエラーは通常、スライスまたは配列内の要素にアクセスしようとしたが、その要素のインデックスが使用可能な範囲外にある場合に発生します。この記事では、このエラーの原因を説明し、解決策とコード例を示します。

まず、このエラーの理由を見てみましょう。インデックスを使用してスライスまたは配列にアクセスする場合、インデックスが使用可能な範囲を超えると、「インデックスが範囲外です」エラーが発生します。たとえば、このエラーは、長さ 5 のスライスがあり、インデックス 6 の要素にアクセスしようとすると発生します。

この問題を解決する鍵は、アクセスするインデックスがスライスまたは配列の範囲内にあることを確認することです。いくつかの解決策を次に示します。

  1. インデックスの範囲を確認します。
    スライスまたは配列にアクセスする前に、条件ステートメントを使用して、インデックスが使用可能な範囲外にあるかどうかを確認できます。たとえば、長さ 5 のスライスがある場合、インデックスが有効かどうかを次の方法で確認できます。

1

2

3

4

5

6

7

if index >= 0 && index < len(slice) {

    // 访问切片中的元素

    // ...

} else {

    // 处理索引超出范围的情况

    // ...

}

ログイン後にコピー

このようにして、インデックスにアクセスする前にインデックスが有効かどうかを判断できるため、インデックスが有効かどうかを確認できます。 「インデックスが範囲外です」エラーが発生します。

  1. range キーワードを使用する:
    もう 1 つの解決策は、range キーワードを使用してスライスまたは配列を反復処理することです。 range キーワードを使用すると、有効なインデックスを持つ要素のみにアクセスできるようになります。サンプル コードは次のとおりです。

1

2

3

4

for index, value := range slice {

    // 使用index和value

    // ...

}

ログイン後にコピー

range キーワードを使用すると、インデックスへの直接アクセスを回避し、代わりに反復変数を使用してスライスまたは配列内の要素にアクセスできます。

要約すると、golang エラー「パニック: ランタイム エラー: インデックスが範囲外です」が発生した場合は、アクセスするインデックスがスライスまたは配列の範囲内にあるかどうかをチェックして確認する必要があります。この問題を解決するには、条件ステートメントまたは range キーワードを使用できます。コード例をいくつか示します。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

// 使用条件语句检查索引范围

func accessSliceByIndex(slice []int, index int) {

    if index >= 0 && index < len(slice) {

        fmt.Println(slice[index])

    } else {

        fmt.Println("索引超出范围")

    }

}

 

// 使用range关键字遍历切片

func rangeSlice(slice []int) {

    for index, value := range slice {

        fmt.Println(index, value)

    }

}

 

func main() {

    // 示例1:使用条件语句

    slice := []int{1, 2, 3, 4, 5}

    accessSliceByIndex(slice, 6)  // 输出:索引超出范围

 

    // 示例2:使用range关键字

    rangeSlice(slice)  // 输出:[0 1] [1 2] [2 3] [3 4] [4 5]

}

ログイン後にコピー

上記の解決策を使用すると、「パニック: 実行時エラー: インデックスが範囲外です」エラーの発生を回避し、スライスまたは配列内の要素に正しくアクセスできます。この記事がお役に立てば幸いです!

以上がgolang エラーの解決方法: パニック: ランタイム エラー: インデックスが範囲外ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang を使用してファイルを安全に読み書きするにはどうすればよいですか? Golang を使用してファイルを安全に読み書きするにはどうすればよいですか? Jun 06, 2024 pm 05:14 PM

Golang を使用してファイルを安全に読み書きするにはどうすればよいですか?

Golang データベース接続用の接続プールを構成するにはどうすればよいですか? Golang データベース接続用の接続プールを構成するにはどうすればよいですか? Jun 06, 2024 am 11:21 AM

Golang データベース接続用の接続プールを構成するにはどうすればよいですか?

Golang と C++ の類似点と相違点 Golang と C++ の類似点と相違点 Jun 05, 2024 pm 06:12 PM

Golang と C++ の類似点と相違点

Golang フレームワーク アーキテクチャの学習曲線はどれくらい急ですか? Golang フレームワーク アーキテクチャの学習曲線はどれくらい急ですか? Jun 05, 2024 pm 06:59 PM

Golang フレームワーク アーキテクチャの学習曲線はどれくらい急ですか?

Golangでリストからランダムな要素を生成するにはどうすればよいですか? Golangでリストからランダムな要素を生成するにはどうすればよいですか? Jun 05, 2024 pm 04:28 PM

Golangでリストからランダムな要素を生成するにはどうすればよいですか?

golangフレームワークの長所と短所の比較 golangフレームワークの長所と短所の比較 Jun 05, 2024 pm 09:32 PM

golangフレームワークの長所と短所の比較

Golang フレームワークでのエラー処理のベスト プラクティスは何ですか? Golang フレームワークでのエラー処理のベスト プラクティスは何ですか? Jun 05, 2024 pm 10:39 PM

Golang フレームワークでのエラー処理のベスト プラクティスは何ですか?

golang フレームワーク ドキュメントの使用手順 golang フレームワーク ドキュメントの使用手順 Jun 05, 2024 pm 06:04 PM

golang フレームワーク ドキュメントの使用手順

See all articles