New Go程序员在这里-如果这是破旧的领域,我深表歉意,但是我的Google搜索并没有找到我想要的答案。
简短版本:作为核心Go项目外部的程序员,我是否可以强制使用特定名称导入我的软件包。如果是这样,怎么办?
较长版本:我最近尝试bcrypt从以下GitHub存储库中安装软件包,其中包含以下内容go get
bcrypt
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。这告诉我我真正想要的是
golang.org/x/crypto/bcrypt
go get golang.org/x/crypto/bcrypt
我想在自己的包装中做类似的事情-Go包装中是否内置了此功能?还是作者crypto/bcrypt在运行时做一些事情来检测并拒绝无效的包导入名称?
crypto/bcrypt
是的,它是内置的,我似乎找不到实现文档(这是1.5或1.6中的一个相对较新的功能),但是语法是:
package name // import "your-custom-path"
示例:https://github.com/golang/crypto/blob/master/bcrypt/bcrypt.go#L7
//编辑
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