首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从不同的包golang实现接口

从不同的包golang实现接口
EN

Stack Overflow用户
提问于 2018-08-02 16:38:55
回答 1查看 6.9K关注 0票数 8

我在尝试实现一个接口时遇到了一些问题,该接口是在golang的另一个包中定义的。我已经对下面的问题做了最小限度的重现。

接口:

代码语言:javascript
复制
package interfaces

type Interface interface {
    do(param int) int
}

实施:

代码语言:javascript
复制
package implementations

type Implementation struct{}

func (implementation *Implementation) do(param int) int {
    return param
}

Main.go:

代码语言:javascript
复制
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{}
}

错误消息:

代码语言:javascript
复制
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

可以从不同的包实现一个接口吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-02 16:58:10

问题是您的do函数没有从implementations包中导出,因为它是以小写字母开头的。因此,从main包的角度来看,变量interfaceImpl没有实现该接口,因为它看不到do函数。

将您的接口函数重命名为大写Do以解决此问题。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51649183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档