以下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。