结论:
1. 数组的单个元素访问时,下标范围[0,len()-1]
2. 数组的切片访问时,下标范围[0,len()]
实验结果如下图:
代码如下:
package main
import "fmt"
func main() {
// 长度为3
a := []int{1, 2, 3}
// 单个元素
{
// 起始地址从2开始,正常操作,b的值为3
b := a[2]
fmt.Println("b:", b)
// 起始地址从3开始,会出错,产生下标超出范围的崩溃,暂时注释掉
//c := a[3]
//fmt.Println("c:", c)
}
// 切片下标访问
{
// 起始地址从2开始,正常操作,b为1个元素的切片
b := a[2:]
fmt.Println("b:", b)
// 起始地址从3开始,不会出错,c为空的切片
c := a[3:]
fmt.Println("c:", c)
// 起始地址从4开始,会出错,产生下标超出范围的崩溃
d := a[4:]
fmt.Println("d:", d)
}
}