【发布时间】:2018-05-23 13:05:44
【问题描述】:
在阅读 this 使用 go 编写 FUSE 文件系统的教程时,我遇到了这个神秘的任务:
var _ fs.Node = (*Dir)(nil)
有人能解释一下这个语法的机制吗?它是如何适应声明它的上下文的?据我了解,赋值的结果实际上被忽略了(右手表达式甚至会导致什么结果?一个 nil Dir 指针?)
【问题讨论】:
在阅读 this 使用 go 编写 FUSE 文件系统的教程时,我遇到了这个神秘的任务:
var _ fs.Node = (*Dir)(nil)
有人能解释一下这个语法的机制吗?它是如何适应声明它的上下文的?据我了解,赋值的结果实际上被忽略了(右手表达式甚至会导致什么结果?一个 nil Dir 指针?)
【问题讨论】:
这使编译器检查类型*Dir 是否满足fs.Node 接口。
获取nil 指针,使其成为*Dir 指针并将其分配给接口类型fs.Node 的未命名变量。由于我们从不使用此变量,因此我们必须将其设为未命名。
【讨论】: