我在尝试实现一个接口时遇到了一些问题,该接口是在golang的另一个包中定义的。我已经对下面的问题做了最小限度的重现。
接口:
package interfaces
type Interface interface {
do(param int) int
}实施:
package implementations
type Implementation struct{}
func (implementation *Implementation) do(param int) int {
return param
}Main.go:
package main
import (
"test/implementing-interface-in-different-package/implementations"
"test/implementing-interface-in-different-package/interfaces"
)
func main() {
var interfaceImpl interfaces.Interface
interfaceImpl = &implementations.Implementation{}
}错误消息:
test/implementing-interface-in-different-package
./main.go:10:16: cannot use implementations.Implementation literal (type
implementations.Implementation) as type interfaces.Interface in assignment:
implementations.Implementation does not implement interfaces.Interface (missing interfaces.do method)
have implementations.do(int) int
want interfaces.do(int) int可以从不同的包实现一个接口吗?
谢谢!
发布于 2018-08-02 16:58:10
问题是您的do函数没有从implementations包中导出,因为它是以小写字母开头的。因此,从main包的角度来看,变量interfaceImpl没有实现该接口,因为它看不到do函数。
将您的接口函数重命名为大写Do以解决此问题。
https://stackoverflow.com/questions/51649183
复制相似问题