gpt4 book ai didi

go - slice 索引大于长度且小于容量会产生错误

转载 作者:IT王子 更新时间:2023-10-29 01:43:35 25 4
gpt4 key购买 nike

以下代码在运行时会出错。

package main

import fmt "fmt"

func main(){

type b []int
var k = make([]b, 5, 10)
fmt.Printf("%d\n",k[8])
fmt.Printf("%d", len(k))
}

错误如下。

panic: runtime error: index out of range

runtime.panic+0x9e /go/src/pkg/runtime/proc.c:1060
runtime.panic(0x453b00, 0x300203f0)
runtime.panicstring+0x94 /go/src/pkg/runtime/runtime.c:116
runtime.panicstring(0x4af6c6, 0xc)
runtime.panicindex+0x26 /go/src/pkg/runtime/runtime.c:73
runtime.panicindex()
main.main+0x8d C:/GOEXCE~1/basics/DATATY~1/slice.go:9
main.main()
runtime.mainstart+0xf 386/asm.s:93
runtime.mainstart()
runtime.goexit /go/src/pkg/runtime/proc.c:178
runtime.goexit()
----- goroutine created by -----
_rt0_386+0xbf 386/asm.s:80

虽然如果打印了 k[0]k[1],它运行正常。您能否解释一下容量对 slice 的确切含义。

最佳答案

你只是在索引,所以索引必须小于长度。 relevant section of the Go specification

A primary expression of the form

a[x]

...

For a of type A or *A where A is an array type, or for a of type S where S is a slice type:

x must be an integer value and 0 <= x < len(a)

但是,如果您正在“slice ”(例如 a[6:9]),那么它将使用大于长度但在容量范围内的索引。

关于go - slice 索引大于长度且小于容量会产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com