接口和接口的实现必须在一个package ?

来源:16-2 简单调度器

198703

2020-05-10

cannot use &scheduler.SimpleScheduler literal (type *scheduler.SimpleScheduler) as type engine.Scheduler in field value:
        *scheduler.SimpleScheduler does not implement engine.Scheduler (missing engine.initChan method)
                have scheduler.initChan(chan types.Request)
                want engine.initChan(chan types.Request)

老师,代码中报了这个错误。SimpleScheduler 实现了initChan方法,但是package不对? 这个怎么解决?难道接口和接口的实现必须在一个package

写回答

1回答

ccmouse

2020-05-17

不必须。Go的隐式实现接口带来的一大好处就是接口和实现可以不在同一个package,甚至接口和实现所处的两个package不必互相引用。

这里我们看他说*scheduler.SimpleScheduler does not implement engine.Scheduler (missing engine.initChan method)

是说我们缺少了initChan方法。在SimpleScheduler里把它实现了就可以。

0
2
198703
找到问题了 initChan 应该是首字母大写,哭笑不得啊。。。。
2020-05-21
共2条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程