package main
func f(vs ...interface{}) {
print(len(vs))
}
func main() {
f()
f(nil)
f(nil...)
}
Choices:
Answer: It prints 0 1 0
.
Run it on Go play.
Key points:
nil
in f(nil...)
is treated as a nil slice (of type []interface{}
).
nil
in f(nil)
is treated as an element in a slice.
The call f(nil)
is equivalent to f([]interface{}{nil}...)
.
f()
is equivalent to f(nil...)
.