小编典典

在Go中强制指定导入路径

go

New Go程序员在这里-如果这是破旧的领域,我深表歉意,但是我的Google搜索并没有找到我想要的答案。

简短版本:作为核心Go项目外部的程序员,我是否可以强制使用特定名称导入我的软件包。如果是这样,怎么办?

较长版本:我最近尝试bcrypt以下GitHub存储库中安装软件包,其中包含以下内容go get

go get github.com/golang/crypto

程序包已正确下载到我的工作区中,但是当我尝试导入它时,出现以下错误

$ go运行main.go
main.go:10:2:/path/to/go/src/github.com/golang/crypto/bcrypt目录中的代码需要导入“
golang.org/x/crypto/bcrypt”

即告诉Go的这个包应该用导入的golang.org/x/crypto/bcrypt。这告诉我我真正想要的是

go get golang.org/x/crypto/bcrypt

我想在自己的包装中做类似的事情-Go包装中是否内置了此功能?还是作者crypto/bcrypt在运行时做一些事情来检测并拒绝无效的包导入名称?


阅读 278

收藏
2020-07-02

共1个答案

小编典典

是的,它是内置的,我似乎找不到实现文档(这是1.5或1.6中的一个相对较新的功能),但是语法是:

package name // import "your-custom-path"

示例:https//github.com/golang/crypto/blob/master/bcrypt/bcrypt.go#L7

//编辑

此功能的设计文档为[https://docs.google.com/document/d/1jVFkZTcYbNLaTxXD9OcGfn7vYv5hWtPx9

lTx1gPMs/edit](https://docs.google.com/document/d/1jVFkZTcYbNLaTxXD9OcGfn7vYv5hWtPx9
–lTx1gPMs/edit)

//编辑

@JimB指出了https://golang.org/cmd/go/#hdr-
Import_path_checking以及go1.4发行说明中的​​内容:https
://golang.org/doc/go1.4#canonicalimports

2020-07-02