Go的这个片段是做什么的?它是继承吗?

时间:2016-10-23 02:48:37

标签: go fuse

我正在阅读a tutorial使用Bazil / Fuse使用Go制作文件系统。

在本教程中,我将以下示例(特别是获取文件系统的Root):

var _ fs.FS = (*FS)(nil)

func (f *FS) Root() (fs.Node, fuse.Error) {
    n := &Dir{
        archive: f.archive,
    }
    return n, nil
}

我不理解的具体路线是第一个。那到底是做什么的?我相信如果我不包括那条线,我可以随意为这个方法制作签名 - 如果我确实包括它,我必须匹配他们的特定签名来覆盖。

有人可以准确解释这条线的作用,以及何时使用它?

1 个答案:

答案 0 :(得分:4)

这行代码是编译时断言,类型*FS满足fs.FS接口。如果断言不为真,编译器会报告错误:

*FS does not implement fs.FS (missing <method name> method)

这样的行的典型用法是确保类型满足某些接口,并且包中没有其他代码依赖于满足接口的类型。

该行对程序的执行没有影响。

相关问题