【问题标题】:Forcing a Specific Import Path in Go在 Go 中强制使用特定的导入路径
【发布时间】:2016-05-19 17:32:24
【问题描述】:

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

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

长版:我最近尝试从following GitHub repository安装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 中的代码需要 import "golang.org/x/crypto/bcrypt "

即有人告诉 Go 这个包应该用golang.org/x/crypto/bcrypt 导入。这告诉我我真正想要的是

go get golang.org/x/crypto/bcrypt

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

【问题讨论】:

    标签: go


    【解决方案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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2021-02-27
    • 1970-01-01
    • 2018-05-25
    相关资源
    最近更新 更多