我正在阅读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
}
我不理解的具体路线是第一个。那到底是做什么的?我相信如果我不包括那条线,我可以随意为这个方法制作签名 - 如果我确实包括它,我必须匹配他们的特定签名来覆盖。
有人可以准确解释这条线的作用,以及何时使用它?
答案 0 :(得分:4)
这行代码是编译时断言,类型*FS
满足fs.FS
接口。如果断言不为真,编译器会报告错误:
*FS does not implement fs.FS (missing <method name> method)
这样的行的典型用法是确保类型满足某些接口,并且包中没有其他代码依赖于满足接口的类型。
该行对程序的执行没有影响。