函数赋值给变量
题目:
下面这段代码输出什么以及原因?
1 | |
- A. nil
- B. not nil
- C. compilation error
答案解析:
B。
在Go语言中,函数变量可以存储函数的地址。在 main 函数中,变量 h 被赋值为 hello 函数的地址。即使 hello 函数返回了一个空切片 nil,它仍然被认为不是 nil。因此,条件 h == nil 不满足,程序会执行 else 分支,输出 “not nil”。
以下解析来自Go语言中文网
这道题目里面,是将函数 hello 赋值给变量 h,而不是函数的返回值(即不是进行函数调用),所以输出 not nil。注意 Go 中函数是一等公民。
函数赋值给变量
http://example.com/2023/06/03/Go每日一题/函数赋值给变量/