gpt4 book ai didi

go - slice 索引超出范围但有一个空间可用

转载 作者:IT王子 更新时间:2023-10-29 02:34:06 25 4
gpt4 key购买 nike

我想弄清楚 slice 大小调整是如何工作的,我有以下示例:

package main

import (
"fmt"
)

func main() {

s := []byte{'A', 'W', 'T', 'Q', 'X'}
b := s[2:4]
fmt.Println(s, len(s), cap(s))
fmt.Println(string(b), len(b), cap(b))
b[1] = 'H'
b[2] = 'V'
fmt.Println(string(b))

}

编译器提示:

panic: runtime error: index out of range

b 的容量为3,为什么我不能像

那样赋值
b[2] = 'V'

最佳答案

索引只在0..len(b)-1范围内有效。引用自 spec :

The elements can be addressed by integer indices 0 through len(s)-1.

超出长度(但在容量范围内)的元素无法通过索引获取。如果您 reslice,您只能访问这些元素包含这些元素的 slice (但在容量范围内)。

关于go - slice 索引超出范围但有一个空间可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940968/

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