我是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

+4

你是什么意思“它没有工作”? –

+1

您可以像其他软件包一样引用其他软件包的接口(在您的案例中为“interfaces.Shaper”)。在这个问题上我没有看到任何真正的问题,你应该澄清你有什么问题(最好通过[mcve])。 –

+0

我已经解释了更多关于我面临的问题。我认为这是一个最小的完整和可验证的例子。你能否在这方面用代码解释关于引用或实现接口的例子?提前致谢。 –