登录
首页 >  Golang >  Go问答

当数组的长度不为空时,转到“anic: runtime error: index out of range”

来源:Golang技术栈

时间:2023-05-03 21:42:02 199浏览 收藏

今天golang学习网给大家带来了《当数组的长度不为空时,转到“anic: runtime error: index out of range”》,其中涉及到的知识点包括golang等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我很难学习如何在 Go 中遍历一个字符串来做一些事情(特别是,将单词分开而不是包含元音)。

我写了这个代码片段: 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

我在这个论坛上搜索,有人说是由于数组长度的原因,但这里不是这样。我无法弄清楚如何解决这个问题。有人可以提出一些建议吗?

正确答案

问题是您正在创建一个长度为 的切片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

到这里,我们也就讲完了《当数组的长度不为空时,转到“anic: runtime error: index out of range”》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>