繁体   English   中英

从不同的包golang实现接口

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM