New Go程序员在这里 - 如果这是一个破旧的领域道歉,但我的谷歌搜索没有找到我正在寻找的答案。
简短版本:作为核心Go项目外部的程序员,我是否可以强制使用特定名称导入我的包。如果是这样,怎么样?
长版本:我最近尝试使用以下bcrypt
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
的作者是否在运行时执行某些操作来检测和拒绝无效的包导入名称?
答案 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