2022-07-24:以下go语言代码输出什么?A:[]int{};B:[]int(nil);C:panic;D:编译错误。

package main

import (
    "fmt"
)

func f(a ...int) {
    fmt.Printf("%#v\n", a)
}

func main() {
    f()
}

答案选B,但却有 58% 的用户选的 A。首先,a 的类型是 []int,调用 f 时,没有传递任何参数,因此相当于值是 nil,即 a 的类型是 []int,值是 nil。而 fmt.Printf 的动词 %#v 会同时打印类型和值。所以结果是 B。 在这里插入图片描述