当前位置: 首页 > 面试题库 >

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

吴兴国
2023-03-14
问题内容

我有以下功能,该功能从终端接收命令并根据输入显示内容。看起来很简单,如果用户键入“ 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]也无法访问。

您可以在检查之前检查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")
}


 类似资料:
  • 问题内容: 我很难学习如何在字符串中循环来做一些事情(比包含元音的单词分开)。 我写了这个代码片段https://play.golang.org/p/zgDtOyq6qf 这是错误: 我在这个论坛上搜索,有人说这是由于数组的长度引起的,但事实并非如此。我不知道如何解决这个问题。有人可以建议什么吗?谢谢 问题答案: 问题在于您正在创建一个length为的切片,但最大容量为,但是同时您试图将一个值分配

  • 问题内容: package main 在上面提到的程序中,即使我们正在从is [2]到on病房访问元素,并且片中只有2个元素,也没有为is [2:]感到恐慌。为什么会这样呢? 问题答案: 切片表达式的go规范阐明了切片所用索引的要求: 如果0 <=低<=高<=最大<= cap(a),则索引在范围内,否则它们超出范围。 对于索引表达式,相关要求是: 如果0 <= x <len(a),则索引x处于范围

  • 在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)在com.microsoft.sqlserver.jdbc.SQLServerPrearedStatement.setterGetParam(SQLServerPrearedStatement.java:9

  • 我已经使用创建了“CfnUserPool”对象https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_cognito/CfnUserPool.html aws文件。 我想获取UserPool的“Pool Id”。其Id值为“us-east-1_4kxxxxxx”。我使用python尝试了很多选项来获取这个值,但都没有成功。 所以我

  • 错误 ()1中的索引器错误回溯(最近一次调用)---- ~/Documents/PhD/IntelliSys19/journal/ColdStart_实验/相似性_函数。用户中u2的装饰矩阵中的py()145:146评级1=np。nan_to_num(np.array(user_ratings_matrix.iloc[u1-1].values))-- ~/anaconda3/lib/python3

  • 我试着运行这个: 但是得到这个错误: 回溯(最后一次调用): 文件“C:\Users\Shakh\Desktop\Hello3.py”,第4行,在 打印(“Hallo”,sys.argv[1]) 索引器:列表索引超出范围