我有以下函数从终端获取命令并根据输入打印一些东西 . 看起来很简单,如果用户键入'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
}
3 回答
如果用户未提供任何输入,则
inp
数组为空 . 这意味着即使索引0
超出范围,也无法访问inp[0]
.在检查
inp[0] == "add"
之前,您可以使用len(inp)
检查inp
的长度 . 这样的事情可能会:你必须首先检查
inp
的长度:您也可以使用
recover()
检查切片的现有索引