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

Go 切片索引超出范围,但有一个空间可用,go,slice,Go,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' f

我正在试图弄清楚切片大小调整是如何工作的,我有以下示例:

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
的容量,为什么我不能分配like

b[2] = 'V'

索引仅在
0..len(b)-1
范围内有效。引述:

元素可以通过整数索引
0
len(s)-1
进行寻址


超出长度(但在容量内)的元素通过索引不可用。只有当您选择包含这些元素(但在容量范围内)的切片时,才能访问这些元素。

索引仅在
0..len(b)-1
范围内有效。引述:

元素可以通过整数索引
0
len(s)-1
进行寻址


超出长度(但在容量内)的元素通过索引不可用。只有当您选择包含这些元素(但在容量范围内)的切片时,才能访问这些元素。

索引仅在
0..len(b)-1
范围内有效。引述:

元素可以通过整数索引
0
len(s)-1
进行寻址


超出长度(但在容量内)的元素通过索引不可用。只有当您选择包含这些元素(但在容量范围内)的切片时,才能访问这些元素。

索引仅在
0..len(b)-1
范围内有效。引述:

元素可以通过整数索引
0
len(s)-1
进行寻址


超出长度(但在容量内)的元素通过索引不可用。只有在您允许切片包含这些元素(但在容量范围内)的情况下,才能访问这些元素。

而且顺便说一句,不是编译器抱怨:是运行时(
panic:runtime error:…
)对于所有这些类型的问题,真正有帮助的是阅读整个Go Tour.golang.org并阅读博客。顺便说一句,不是编译器抱怨:是运行时(
panic:runtime error:…
)对于所有这些类型的问题,真正有帮助的是阅读整个Go Tour.golang.org并阅读博客。顺便说一句,不是编译器抱怨:是运行时(
panic:runtime error:…
)对于所有这些类型的问题,真正有帮助的是访问整个Go Tour.golang.org并阅读博客。顺便说一句,不是编译器抱怨:是运行时(
panic:runtime error:…
)。对于所有这些类型的问题,真正有帮助的是访问整个Go Tour.golang.org并阅读博客。