切片索引超出范围,但有一个 space 可用
Slice index out of range but one space is free
我想弄清楚切片调整大小的工作原理,我有以下示例:
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'
我想弄清楚切片调整大小的工作原理,我有以下示例:
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'