エラーの対処方法

【Golang】Go言語のindex out of rangeエラーの5つの発生原因と対処方法

Go言語の "index out of range" エラーについて

Go言語でプログラミングをしていると、配列やスライスの要素にアクセスする際に "index out of range" というエラーが出ることがあります。
これは、存在しないインデックスを参照しようとしたときに発生します。
今回は、そのようなソースコードの例と、それぞれの対処法を紹介していきましょう。

サルモリ
そうだよね。インデックスを超えてアクセスしようとすると、エラーが出てしまうんだよね。

他のエラーはコチラ

【Golang】Go言語でよく発生するエラー一覧8選

Go言語の一般的なエラーとその対処法 これから解説するエラー undefined: [変数名] syntax error: unexpected [トークン], expecting [トークン] re ...

続きを見る

例1:配列の範囲外アクセス

まずは、配列の範囲外にアクセスしようとするコードの例から見ていきましょう。

 出力結果
panic: runtime error: index out of range [3] with length 3 

ここでは、長さ3の配列 a に対して、存在しないインデックス 3 を参照しようとしています。
インデックスは0から始まるため、配列 a が持つインデックスは0, 1, 2 のみです。
対処法は、参照するインデックスが配列の長さ以下であることを確認することです。

 出力結果
3 
サルモリ
そうなんだ。インデックスは0から始まるから、注意が必要だね!

例2:スライスの範囲外アクセス

次に、スライスの範囲外にアクセスするケースを見ていきましょう。

 出力結果
panic: runtime error: index out of range [3] with length 3 

こちらも、長さ3のスライス s に対して、存在しないインデックス 3 を参照しようとしています。
スライスも配列と同様、インデックスは0から始まるため、スライス s が持つインデックスは0, 1, 2 のみです。
このエラーを避けるためには、参照するインデックスがスライスの長さ以下であることを確認することです。

 出力結果
3 
サルモリ
配列もスライスも、インデックスは0から始まるんだね。気をつけないといけないね!

例3:空のスライスへのアクセス

空のスライスに対してアクセスしようとすると、同様のエラーが出ます。

 出力結果
panic: runtime error: index out of range [0] with length 0 

このエラーを避けるためには、スライスが空でないことを確認するか、あるいはアクセスする前にスライスに要素を追加することです。

 出力結果
1 
サルモリ
空のスライスにアクセスしようとすると、エラーが出るんだね。気をつけなくちゃ!

例4:スライスの範囲外へのアサインメント

スライスの範囲外のインデックスに値を代入しようとすると、"index out of range" エラーが発生します。

 出力結果
panic:runtime error: index out of range [3] with length 3 

この例では、長さ3のスライス s の存在しないインデックス 3 に値を代入しようとしています。
このエラーを避けるためには、スライスに要素を追加するときには append 関数を使用することです。

 出力結果
[1 2 3 4] 
サルモリ
スライスに新しい要素を追加するときは、append関数を使うんだね!

例5:マップに存在しないキーへのアクセス

最後に、マップに存在しないキーへのアクセスを試みるとエラーは発生しませんが、そのキーのゼロ値が返されます。
これは "index out of range" エラーとは異なりますが、意図しない結果を引き起こす可能性があるため、注意が必要です。

 出力結果
0 

このエラーを避けるためには、マップにキーが存在するかどうかをチェックすることです。

 出力結果
Key does not exist. 
サルモリ
マップには、キーが存在するかどうかをチェックする機能があるんだね!

まとめ

以上、Go言語における "index out of range" エラーについて、その発生するソースコードと対処法について見てきました。
インデックスは0から始まるため、それを超えてアクセスしないように注意し、またスライスやマップにアクセスする前には、その要素やキーが存在することを確認することが重要です。
これらのポイントを覚えて、Goのコードを書く際のエラーを少なくしていきましょう!

サルモリ
最後まで読んでくれてありがとう!!

最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!

サルモリ
最後まで読んでくれてありがとう!!

他のエラーはコチラ

【Golang】Go言語でよく発生するエラー一覧8選

Go言語の一般的なエラーとその対処法 これから解説するエラー undefined: [変数名] syntax error: unexpected [トークン], expecting [トークン] re ...

続きを見る

-エラーの対処方法

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock