我是golang的初學者,正在嘗試接口。我想將接口保存在一個單獨的包中,以便我可以使用它在各種其他包中實現此功能,並將其提供給其他團隊(.a文件),以便他們可以實現自定義插件。請參閱下面的示例,瞭解我想實現的目標。如何在golang中實現不同包中的接口?
--- Folder structure ---
gitlab.com/myproject/
interfaces/
shaper.go
shapes/
rectangle.go
circle.go
---- shaper.go ---
package interfaces
type Shaper interface{
Area() int
}
如何確保rectangle.go實現整形器接口? 我明白,隱式實現接口,這是否意味着rectangle.go會自動實現shaper.go,即使它位於不同的包中?
我試過它像下面,但是當我運行gofmt工具,它會刪除導入,因爲它是未使用的。
--- rectangle.go ---
package shapes
import "gitlab.com/myproject/interfaces"
type rectangle struct{
length int
width int
}
func (r rectangle) Area() int {
return r.length * r.width
}
在此先感謝。
你是什麼意思「它沒有工作」? –
您可以像其他軟件包一樣引用其他軟件包的接口(在您的案例中爲「interfaces.Shaper」)。在這個問題上我沒有看到任何真正的問題,你應該澄清你有什麼問題(最好通過[mcve])。 – Carpetsmoker
我已經解釋了更多關於我面臨的問題。我認爲這是一個最小的完整和可驗證的例子。你能否在這方面用代碼解釋關於引用或實現接口的例子?提前致謝。 – Sanketh