以下代码输出什么?

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 在线运行

Go中切片\数组初始化是可以携带索引的。

// 1. 不带键的元素
slice1 := []int{1, 2, 3}

// 2. 带键的元素(键是索引)
slice2 := []string{0: "a", 1: "b", 2: "c"}

本题中是一种带有显式索引和隐式索引的混合初始化方式。

解析 []int{4: 44, 55, 66, 1: 77, 88} 的初始化过程

  1. 4: 44,显式指定索引下标 4 处的值为 44。 [0, 0, 0, 0, 44]
  2. 55 和 66 ,未指定索引,则从上一个索引位置开始依次放置。
    [0, 0, 0, 0, 44, 55, 66]
  3. 1: 77,显式指定索引下标 1 处的值为 77。
    [0, 77, 0, 0, 44, 55, 66]
  4. 88 ,未指定索引,则从上一个索引位置开始依次放置。
    [0, 77, 88, 0, 44, 55, 66]

因此 x的内容为 [0, 77, 88, 0, 44, 55, 66]
本题问该切片(len(x), x[2]) ,得出输出结果为答案C 7 88