我正在wgo中使用wgo进行依赖关系管理(尽管我认为wgo与它无关),wgo具有这样的文件夹结构
project/
.gocfg/
gopaths
vendor.json
vendor/
src/
github.com_or_whatever/
我有一个自己编写的库,该库nsq-go
在导出的方法之一中使用类型:
func AddNsqSubscription(
topic, channel string,
handler nsq.Handler,
config *nsq.Config) error { }
该库被称为messi
我导入nsq-go
像这样"messi/vendor/src/github.com/bitly/go-nsq"
当我尝试在另一个项目中使用此库时,就会出现问题。例如,在一个名为scribe
我的项目中,有以下代码(请注意导入):
import (
"scribe/vendor/src/github.com/bitly/go-nsq"
"scribe/vendor/src/messi"
)
//...
nsqHandler := nsq.HandlerFunc(func(message *nsq.Message) error {
msgHandler(MessiMessage{message})
return nil
})
return messi.AddNsqSubscription(destination, subdestination, nsqHandler, nsq.NewConfig())
当我go build
返回以下错误:
不能将 nsqHandler(类型为“ scribe /vendor/src/github.com/bitly/go-nsq”.HandlerFunc)用作类型“ messi /vendor/src/github.com/bitly/go-nsq”。 .AddNsqSubscription:“ scribe / vendor / src / github.com / bitly / go-nsq”。HandlerFunc不实现“ messi / vendor / src / github.com / bitly / go-nsq”。Handler(HandleMessage方法的类型错误)
出现 HandleMessage(“ 抄写 /vendor/src/github.com/bitly/go-nsq".Message)错误
想要 HandleMessage( ” messi /vendor/src/github.com/bitly/go-nsq".Message)错误
为什么?我真的不知道发生了什么。go-nsq
导入的代码完全相同,但是golang希望此代码来自同一文件夹吗?
我究竟做错了什么?
Go中的软件包是通过完整的导入路径而不是名称来标识的。
例如,在标准库中,有两个名称相同template
但导入路径不同的软件包:text/template
和html/template
。
您应该确保go-nsq
使用相同的路径导入包。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句