首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在库中使用外部依赖项

在库中使用外部依赖项
EN

Stack Overflow用户
提问于 2015-08-12 15:09:19
回答 1查看 1.3K关注 0票数 0

我在Golang中使用wgo进行依赖关系管理(虽然我认为wgo与此无关),wgo有类似的文件夹结构

代码语言:javascript
复制
project/
    .gocfg/
        gopaths
        vendor.json
    vendor/
        src/
            github.com_or_whatever/

我有一个自己编写的库,它在导出的方法中使用nsq-go类型:

代码语言:javascript
复制
func AddNsqSubscription(
    topic, channel string, 
    handler nsq.Handler, 
    config *nsq.Config) error { }

这个库名为messi,我导入的nsq-go类似于"messi/vendor/src/github.com/bitly/go-nsq"

当我试图在另一个项目中使用这个库时,问题就出现了。例如,在一个名为scribe的项目中,我有以下代码(注意导入):

代码语言:javascript
复制
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时,将返回以下错误:

"scribe/vendor/src/github.com/bitly/go-nsq".HandlerFunc)不能使用 nsqHandler (在messi.AddNsqSubscription参数中键入"messi/vendor/src/github.com/bitly/go-nsq".Handler:"scribe/vendor/src/github.com/bitly/go-nsq".HandlerFunc不实现"messi/vendor/src/github.com/bitly/go-nsq".Handler (错误类型为HandleMessage方法)) HandleMessage("scribe/vendor/src/github.com/bitly/go-nsq".Message) 错误 HandleMessage("messi/vendor/src/github.com/bitly/go-nsq".Message) 需要错误

为什么?我真的不知道发生了什么。导入的代码go-nsq完全相同,但golang希望这段代码来自同一个文件夹?

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-12 15:20:39

Go中的包由完整导入路径标识,而不是按名称标识。

例如,在标准库中,有两个不同的包,它们同名为template,但导入路径不同:text/templatehtml/template

您应该确保使用相同的路径导入go-nsq包。

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

https://stackoverflow.com/questions/31969088

复制
相关文章

相似问题

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