我是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
}
在此先感谢。
2017-06-03 Sanketh
你是什么意思“它没有工作”? –
您可以像其他软件包一样引用其他软件包的接口(在您的案例中为“interfaces.Shaper”)。在这个问题上我没有看到任何真正的问题,你应该澄清你有什么问题(最好通过[mcve])。 –
我已经解释了更多关于我面临的问题。我认为这是一个最小的完整和可验证的例子。你能否在这方面用代码解释关于引用或实现接口的例子?提前致谢。 –