首頁  >  文章  >  後端開發  >  有沒有辦法透過 go cmdline 或 IDE (IntelliJ) 找出我的結構實作了哪些介面?

有沒有辦法透過 go cmdline 或 IDE (IntelliJ) 找出我的結構實作了哪些介面?

PHPz
PHPz轉載
2024-02-09 09:30:38448瀏覽

有没有办法通过 go cmdline 或 IDE (IntelliJ) 找出我的结构实现了哪些接口?

php小編小新回答你的問題,如果你想知道你的結構實作了哪些接口,有幾種方法可以實作。首先,你可以使用go cmdline命令列工具來尋找。在命令列中輸入"go doc -all",然後按回車鍵,它會顯示出你的結構中實現的所有介面。另外,如果你使用的是IntelliJ IDE,你可以使用它提供的程式碼導航功能來找出你的結構實現的介面。只需在程式碼中找到你的結構定義,然後按住Ctrl鍵並點擊結構名稱,它將會顯示所有的介面實作。希望這些方法對你有幫助!

問題內容

說我有

// main.go
type Speaker interface {
  Speak()
}

type Person struct {}

func (p *Person) Speak() {
   panic("test")
}

在給定程式碼中其他地方的人,有沒有辦法知道 Person 實作了哪些介面?很明顯,Person 實作了Speaker,但是如果是其他型別呢

type Ghost interface {
  Speak()
}

存在於另一個套件中?

就上下文而言,我正在查看程式碼庫,但很難決定是否可以刪除接收器方法,因為很難判斷該方法是否存在是為了滿足介面要求,還是只是為了增強功能。在獨立的程式碼庫中,我可以刪除它並查看是否出現編譯器錯誤,但我不能在公共庫中執行相同的操作。

解決方法

從goland 文件中,您可以使用正在實現或覆蓋您的介面的裝訂線圖示轉到單一實現,或者您可以使用Cmd U 找到所有實現(假設您在Mac 上工作)。這是文檔的連結:

https://www.jetbrains .com/help/go/navigating-through-the-source-code.html#go_to_implementation

由於 Goland 是基於 IntelliJ 的 Go IDE,因此您應該能夠執行相同的操作。您可能需要配置裝訂線圖標,但相同的命令應該在 IntelliJ 中工作。

以上是有沒有辦法透過 go cmdline 或 IDE (IntelliJ) 找出我的結構實作了哪些介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除