我有以下功能,该功能从终端接收命令并根据输入显示内容。看起来很简单,如果用户键入“ 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 }
如果用户不提供任何输入,则该inp数组为空。这意味着即使索引0超出范围,inp[0]也无法访问。
inp
0
inp[0]
您可以在检查之前检查inpwith 的长度。这样的事情可能会做:len(inp)``inp[0] == "add"
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") }