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

新的 Go 程序员在这里——如果这是陈旧的领域,我深表歉意,但我的谷歌搜索没有找到我正在寻找的答案。

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

长版:我最近尝试bcrypt以下 GitHub 存储库安装包,具有以下内容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”

ie 告诉 Go 这个包应该用golang.org/x/crypto/bcrypt. 这让我知道我真正想要的是

go get golang.org/x/crypto/bcrypt

我想在我自己的包中做类似的事情——这个功能是内置在 Go 包中的吗?或者作者是否crypto/bcrypt在运行时做一些事情来检测和拒绝无效的包导入名称?


桃花长相依
浏览 115回答 1
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// 编辑@JimB 指出https://golang.org/cmd/go/#hdr-Import_path_checking,并在 go1.4 发行说明中:https ://golang.org/doc/go1.4#canonicalimports
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go