为了账号安全,请及时绑定邮箱和手机立即绑定

切片索引超出范围但有一个空间可用

切片索引超出范围但有一个空间可用

Go
一只甜甜圈 2021-10-04 10:16:37
我试图弄清楚切片调整大小的工作原理,我有以下示例:package mainimport (    "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 rangeb有容量3,为什么我不能分配喜欢b[2] = 'V'
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

该索引仅在 范围内有效0..len(b)-1。引用规范

该元件可以由整数索引来解决0通过len(s)-1

超出长度(但在容量内)的元素无法通过索引获得。如果您重新切片切片以包含这些元素(但在容量范围内),则您只能访问这些元素。


查看完整回答
反对 回复 2021-10-04
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信