函数赋值给变量
题目:
下面这段代码输出什么以及原因?
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每日一题/函数赋值给变量/