我正在关注本教程: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
这是什么意思?教程错了吗?我该怎么做才能解决它?
答案 0 :(得分:3)
您忘记了append
增长s
的部分。
s = append(s, "d")
s = append(s, "e", "f")
fmt.Println("apd:", s)
答案 1 :(得分:3)
您的代码省略了原始示例中的这些行:
s = append(s, "d")
s = append(s, "e", "f")
没有这些行,len(s)== 3.