一次两道题,因为相关的。
1、以下代码输出什么?
package main
import (
"fmt"
)
func main() {
a := []int{2: 1}
fmt.Println(a)
}
A:编译错误;B:[2 1];C:[0 0 1];D:[0 1]
2、以下代码输出什么?
package main
func main() {
var x = []int{4: 44, 55, 66, 1: 77, 88}
println(len(x), x[2])
}
A:5 66;B:5 88;C:7 88;D:以上都不对
C C
a := []int{2: 1} 下表2 值为1
因此初始化出来的切片 cap 3 len 3 内容是 0 0 1, int的零值为0
var x = []int{4: 44, 55, 66, 1: 77, 88}
这里要慢慢看
4: 44 下标4的值为44 , 后面的55没有制定下标,默认是前一个+1 类似 5:55 , 66就是 6:66,
1: 77 下标 1 值为 77 ,88 就是 2 :88
因此初始化出来的切片 cap 7 len 7 内容是 0 77 88 0 44 55 66
[0 77 88 0 44 55 66]