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。
本作品採用《CC 協議》,轉載必須註明作者和本文連結