一尘不染

恐慌:运行时错误:Go中的索引超出范围

go

我有以下功能,该功能从终端接收命令并根据输入显示内容。看起来很简单,如果用户键入“ add”,则系统将打印一行,如果用户未键入任何内容,则将打印其他内容。

只要用户类型添加,它就起作用。如果用户未输入任何内容,则会引发

紧急情况:运行时错误: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

    }

阅读 396

收藏
2020-07-02

共1个答案

一尘不染

如果用户不提供任何输入,则该inp数组为空。这意味着即使索引0超出范围,inp[0]也无法访问。

您可以在检查之前检查inpwith 的长度。这样的事情可能会做: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")
}
2020-07-02