在Go中强制使用特定的导入路径

时间:2016-05-19 17:32:24

标签: go

New Go程序员在这里 - 如果这是一个破旧的领域道歉,但我的谷歌搜索没有找到我正在寻找的答案。

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

长版本:我最近尝试使用以下bcrypt

following GitHub repository安装go get个软件包
go get github.com/golang/crypto

包正确下载到我的工作区,但是当我尝试导入它时,我收到以下错误

   $ go run 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的作者是否在运行时执行某些操作来检测和拒绝无效的包导入名称?

1 个答案:

答案 0 :(得分:6)

是的,它内置了,我似乎无法找到实施文档(它在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

//编辑

@JimB指出https://golang.org/cmd/go/#hdr-Import_path_checking,并在go1.4发行说明中指出:https://golang.org/doc/go1.4#canonicalimports