1. ホーム
  2. go

[解決済み] 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] にアクセスできない。

の長さを確認することができます。 inplen(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")
}