簡體   English   中英

Go的這段代碼有什么作用? 是繼承嗎?

[英]What does this snippet of Go do? Is it inheritance?

我正在閱讀有關使用Bazil / Fuse使用Go制作文件系統的教程

在本教程中,我將以以下示例為例(特別是獲取文件系統的根):

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

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

我不理解的特定行是第一行。 那實際上是在做什么? 我相信,如果不包括該行,則可以根據需要為該方法創建簽名-如果添加了該行,則必須匹配其特定簽名才能覆蓋。

有人可以確切解釋此行的用途以及何時使用它嗎?

這行代碼是一個編譯時斷言,表明*FS類型滿足fs.FS接口。 如果斷言不正確,則編譯器將報告錯誤:

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

這樣的行的典型用法是確保類型滿足某些接口,並且程序包中沒有其他代碼依賴於滿足接口的類型。

該行對程序的執行沒有影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM