[解決済み] panic: ランタイムエラー:Goのインデックスが範囲外
2022-02-17 17:12:14
質問
ターミナルからコマンドを受け取り、入力に応じて何かを表示する以下のような関数があります。ユーザーが'add'と入力すると、システムが1行を表示し、何も入力しなければ、他のものを表示するという単純なものです。
ユーザーがaddと入力すると、いつでも動作します。もしユーザーが何も入力しなければ、次のようにスローされます。
panic: ランタイムエラー: GoLang のインデックスが範囲外です。
これはなぜですか?
func bootstrapCmd(c *commander.Command, inp []string) error {
if inp[0] == "add" {
fmt.Println("you typed add")
} else if inp[0] == "" {
fmt.Println("you didn't type add")
}
return nil
}
解決方法は?
ユーザーが何も入力しない場合は
inp
の配列は空です。つまり、インデックス
0
は範囲外、つまり
inp[0]
にアクセスできない。
の長さを確認することができます。
inp
で
len(inp)
を確認する前に
inp[0] == "add"
. このような感じでしょうか。
if len(inp) == 0 {
fmt.Println("you didn't type add")
} else if inp[0] == "add" {
fmt.Println("you typed add")
}
関連
-
[解決済み】vsコードの解決方法 - goplsコマンドが使用できません。
-
[解決済み】golangでデータ構造をディープコピーする
-
[解決済み] GO言語:致命的なエラー:すべてのゴルーチンがスリープしている - デッドロック
-
[解決済み] Notepad++ 用の Go 言語プラグイン
-
[解決済み] Goで構造体のフィールドを反復処理する
-
[解決済み] go get でパッケージをインストールするにはどうしたらいいですか?
-
[解決済み] goでローカルパッケージをインポートするには?
-
[解決済み] Goで部分文字列を抽出する
-
[解決済み】スライスの最後の要素を取得する方法は?
-
[解決済み】gopathを使わずにローカルパッケージをインポートする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Goプロジェクトのビルド時に「XXXパッケージはGOROOTにありません」と表示される。
-
[解決済み】golangでデータ構造をディープコピーする
-
[解決済み] GORMでレコードを作成・更新するには?
-
runnerw.exe: CreateProcess はエラー 216 で失敗しました。プロセスが終了し、終了コード 216 が表示された 実行するプロジェクトがこの例外をスローする
-
[解決済み] このキャスティングはgolangで行われているのでしょうか?
-
[解決済み] golangでリーズナブルなスタック実装をお探しですか?
-
[解決済み] Goの:=と=の演算子の違い
-
[解決済み] "宣言されているが使用されていない "という迷惑なエラーを回避する方法
-
[解決済み】チャンネルを開いたままにしておいてもいいのでしょうか?
-
[解決済み】gopathを使わずにローカルパッケージをインポートする方法