我试图找出切片是如何工作的.请查看以下代码
package main import "fmt" type ByteSlice []byte func (p *ByteSlice) Append(data []byte) { slice := *p *p = append(slice, data...) } func main() { var a ByteSlice a[0] = 3 b := []byte{4,6,7} a.Append(b) fmt.Println(b) }
正如您在append函数中看到的,我尝试将slice参数附加到调用中,但是我遇到以下错误:
panic: runtime error: index out of range goroutine 16 [running]: runtime.panic(0x4a14e0, 0x51333c) c:/go/src/pkg/runtime/panic.c:279 +0xe9 main.main() D:/Go/samples/src/method.go:16 +0x243 goroutine 17 [runnable]: runtime.MHeap_Scavenger() c:/go/src/pkg/runtime/mheap.c:507 runtime.goexit() c:/go/src/pkg/runtime/proc.c:1445 goroutine 18 [runnable]: bgsweep() c:/go/src/pkg/runtime/mgc0.c:1976 runtime.goexit() c:/go/src/pkg/runtime/proc.c:1445 goroutine 19 [runnable]: runfinq() c:/go/src/pkg/runtime/mgc0.c:2606 runtime.goexit() c:/go/src/pkg/runtime/proc.c:1445 exit status 2
我错在哪里?