新Go程序员在这里 - 如果这是一个很好的领域,我道歉,但我的谷歌搜索没有找到我正在寻找的答案.
简短版本:作为核心Go项目外部的程序员,我是否可以强制使用特定名称导入我的包.如果是这样,怎么样?
长版本:我最近尝试bcrypt从以下GitHub存储库安装软件包,具体如下go get
go get github.com/golang/crypto
Run Code Online (Sandbox Code Playgroud)
包正确下载到我的工作区,但当我尝试导入它时,我收到以下错误
$ 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
Run Code Online (Sandbox Code Playgroud)
我想在自己的软件包中做类似的事情 - 这个功能内置于Go包装中吗?或者是crypto/bcrypt在运行时做某事来检测和拒绝无效的包导入名称的作者?
是的它是内置的,我似乎无法找到实现文档(它是1.5或1.6中相对较新的功能)但语法是:
package name // import "your-custom-path"
Run Code Online (Sandbox Code Playgroud)
示例: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
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |