下面这段代码输出什么以及原因?
func hello() []string {
return nil
}
func main() {
h := hello
if h == nil {
fmt.Println("nil")
} else {
fmt.Println("not nil")
}
}
A. nil B. not nil C. compilation error
B。这道题目里面,是将函数 hello 赋值给变量 h,而不是函数的返回值(即不是进行函数调用),所以输出 not nil。注意 Go 中函数是一等公民。
如果修改为
func hello() []string {
return nil
}
func main() {
h := hello()
if h == nil {
fmt.Println("nil")
} else {
fmt.Println("not nil")
}
}
答案才能为A