[英]Implementing interface from different package golang
我在尝试实现一个接口时遇到了一些问题,这个接口是在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
是否可以从不同的包实现接口?
谢谢!
问题是你的do
函数不是从implementations
包中导出的,因为它以小写字母开头。 因此,从main
包的角度来看,变量interfaceImpl
不实现接口,因为它无法看到do
函数。
将您的界面功能重命名为大写Do
来解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.