猿问

恐慌:运行时错误:切片边界超出范围

我正在关注本教程:https : //gobyexample.com/slices


我在中间:


package main


import "fmt"


func main() {


    s := make([]string, 3)

    fmt.Println("emp:", s)


    s[0] = "a"

    s[1] = "b"

    s[2] = "c"

    fmt.Println("set:", s)


    c := make([]string, len(s))

    copy(c, s)

    fmt.Println("copy:", c)


    l := s[2:5]

    fmt.Println("sl1:", l)

}

当我突然遇到这个错误时:


alex@alex-K43U:~/golang$ go run hello.go

emp: [  ]

set: [a b c]

copy: [a b c]

panic: runtime error: slice bounds out of range


goroutine 1 [running]:

main.main()

    /home/alex/golang/hello.go:19 +0x2ba


goroutine 2 [syscall]:

created by runtime.main

    /usr/lib/go/src/pkg/runtime/proc.c:221

exit status 2

这是什么意思?教程有误吗?我能做些什么来修复它?


UYOU
浏览 198回答 2
2回答

慕虎7371278

您的代码从原始示例中省略了这些行:s = append(s, "d") s = append(s, "e", "f")如果没有这些行,len(s) == 3。

守着一只汪

你忘记了append增长的部分s。s = append(s, "d") s = append(s, "e", "f") fmt.Println("apd:", s)
随时随地看视频慕课网APP

相关分类

Go
我要回答