一尘不染

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

go

我很难学习如何在字符串中循环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

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


阅读 199

收藏
2020-07-02

共1个答案

一尘不染

问题在于您正在创建一个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

2020-07-02