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

恐慌:运行时错误:索引超出范围,但数组长度不为null

黄逸清
2023-03-14
问题内容

我很难学习如何在字符串中循环Golang来做一些事情(比包含元音的单词分开)。

我写了这个代码片段https://play.golang.org/p/zgDtOyq6qf
这是错误:

panic: runtime error: index out of range

goroutine 1 [running]:
panic(0x1045a0, 0x1040a010)
    /usr/local/go/src/runtime/panic.go:500 +0x720
main.myFunc(0x114130, 0x4, 0x0, 0x0, 0x0, 0x3ba3)
    /tmp/sandbox960520145/main.go:19 +0x1a0
main.main()
    /tmp/sandbox960520145/main.go:10 +0x40

我在这个论坛上搜索,有人说这是由于数组的长度引起的,但事实并非如此。我不知道如何解决这个问题。有人可以建议什么吗?谢谢


问题答案:

问题在于您正在创建一个length为的切片0,但最大容量为4,但是同时您试图将一个值分配给所创建切片的第零个索引,该索引通常为空。这就是为什么您收到的原因index out of range error

result := make([]string, 0, 4)
fmt.Println(len(result)) //panic: runtime error: index out of range

您可以使用以下方法更改此代码:

result := make([]string, 4)

这意味着容量将与切片长度相同。

fmt.Println(cap(result)) // 4
fmt.Println(len(result)) // 4

您可以在此处阅读有关 数组切片映射的 信息:https : //blog.golang.org/go-slices-usage-and-
internals



 类似资料:
  • 问题内容: 我有以下功能,该功能从终端接收命令并根据输入显示内容。看起来很简单,如果用户键入“ add”,则系统将打印一行,如果用户未键入任何内容,则将打印其他内容。 只要用户类型添加,它就起作用。如果用户未输入任何内容,则会引发 紧急情况:运行时错误:GoLang中的索引超出范围 为什么是这样? 问题答案: 如果用户不提供任何输入,则该数组为空。这意味着即使索引超出范围,也无法访问。 您可以在检

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

  • 问题内容: 我已经声明了我的数组 然后我初始化它的值像 在运行时,它给出错误“数组索引超出范围” 问题答案: 正如评论员@C_X和@MartinR所说,您的数组为空。这是根据需要初始化的方法… …当然,如果您只想零,那么循环现在是多余的!

  • 问题内容: 我已经开始处理我的第一个Java程序,它是一个简单的计算器,但是我得到一个错误,声称我的数组超出范围。我尝试对其进行调试,以了解这样做的原因和原因,并遵循纸上的代码,两者均显示了我期望和期望的结果。因此,我看不到问题出在哪里。代码不完整。 根据调试器,此行出现错误: 这是我当前拥有的代码的主要部分: 这是我收到的错误消息: 问题答案: 当等于中的最后一个元素索引时,则将大于最后一个元素

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

  • 你好,stackoverflow的好人们!我有一个奇怪的问题,我不明白。我要发布我的两个有问题的方法: 另一个: 所以,我正在根据我在网上找到的一些代码制作一个数独解算器。现在,当我试着调试程序时,我可以很好地检查一些行(并且它按照预期工作),但是一旦程序第一次在方法“resi”中调用“next”方法,它就会崩溃,出现数组索引越界异常。如果我只是尝试在不进行调试的情况下运行该程序,那么在同一方法调