fibonacci := [8]int{0, 1, 1, 2, 3, 5, 7, 13} // fibonacci是一个[8]int类型的数组。这包括(有些不正确的)斐波那契序列的前8个元素。
fibslice := fibonacci[:] // fibslice是一个类型为[]int的片断
ptrfib := &fibonacci // ptrfib 是一个指向数组 fibonacci 的指针,其类型为 [8]int
a := fibonacci[3] // a的类型和值分别为int和2
b := fibslice[4] // b的类型和值分别是int和3
c := ptrfib[5] // c的类型和值分别是int和5。注意,索引表达式ptrfib[5]等同于(*ptrfib)[5]
fibonacci[6] = 8 // 这次赋值后,fibonacci[6]、fibslice[6]和*ptrfib[6]的值都是8(正确的Fibonacci数)
在Map索引的情况下,Go 在初始化或赋值中使用索引表达式时会提供特殊形式。例如,对于 map[K]V 类型的映射 m 和类型 K 的键 k,m[k] 返回两个值。
_, ok := m[k] // 根据 m 是否包含键 k 的元素,即取决于 ok 的值,我们可以做进一步的处理
v := m[k] // 当我们确定 m 包含一个键为 k 的元素时,我们可以忽略第二个返回值。此语句等价于 v, _ := m[k]