从不同的包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

是否可以从其他包中实现接口?


扬帆大鱼
浏览 1037回答 1
1回答

森林海

问题在于您的do函数没有从implementations包中导出,因为它以小写字母开头。因此,从包的角度来看main,变量interfaceImpl无法实现接口,因为它看不到do函数。重命名您的接口函数为大写字母Do以解决此问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go