【问题标题】:What does this snippet of Go do? Is it inheritance?这个 Go 代码片段是做什么的?是继承吗?
【发布时间】:2017-03-05 02:05:48
【问题描述】:

我正在阅读a tutorial 关于使用 Bazil/Fuse 使用 Go 创建文件系统的内容。

在教程中,我以以下为例(专门获取文件系统的根):

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

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

我不理解的具体行是第一行。那实际上在做什么?我相信如果我不包含该行,我可以为该方法制作任何我想要的签名 - 如果我确实包含它,我必须匹配他们的特定签名以覆盖。

有人能准确解释一下这条线的作用吗?我什么时候想用它?

【问题讨论】:

标签: go fuse


【解决方案1】:

这行代码是一个编译时断言,类型*FS满足fs.FS接口。如果断言不成立,编译器会报错:

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

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

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

【讨论】:

猜你喜欢
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多