当前位置: 首页 > 面试题库 >

在Go中强制指定导入路径

秦俊豪
2023-03-14
问题内容

New Go程序员在这里-如果这是破旧的领域,我深表歉意,但是我的Google搜索并没有找到我想要的答案。

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

较长版本:我最近尝试bcrypt从以下GitHub存储库中安装软件包,其中包含以下内容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。这告诉我我真正想要的是

go get golang.org/x/crypto/bcrypt

我想在自己的包装中做类似的事情-Go包装中是否内置了此功能?还是作者crypto/bcrypt在运行时做一些事情来检测并拒绝无效的包导入名称?


问题答案:

是的,它是内置的,我似乎找不到实现文档(这是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](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



 类似资料:
  • 我正在将正在运行的Vue.js应用程序转换为使用Vue cli/Webpack和导入的模块。目前,我发现有一件事相当乏味,那就是准确地指定导入的相对路径。例如,,。容易犯错误。 我假设指定一个基目录或根目录并从中指定绝对路径必须足够简单,但我看不出在哪里可以这样做。例如,在标准的vue cli网页包设置中,我正在处理的代码都在“src”目录中,其中有“components”、“mixin”等。如果

  • 问题内容: 用go编程语言,为什么在导入软件包后,我仍然必须在该软件包中的方法前面加上软件包名称? 即 这不是多余的吗?例如,在Java中,无需导入文件就可以执行Files.readAllLines等操作。 问题答案: 我想这并不能真正回答您的问题,但是如果您愿意,您实际上可以在不显式说明软件包的情况下调用方法- 只需在名称前面添加一个即可(但不建议这样做;请参见下文): 注意下面@ JIMT的评

  • 简介 Apache ShardingSphere 使用 ThreadLocal 管理分片键值进行强制路由。 可以通过编程的方式向 HintManager 中添加分片值,该分片值仅在当前线程内生效。 Hint 的主要使用场景: 分片字段不存在 SQL 和数据库表结构中,而存在于外部业务逻辑。 强制在主库进行某些数据操作。 使用方法 使用 Hint 分片 规则配置 Hint 分片算法需要用户实现 or

  • 问题内容: 我正在尝试安装,但正在运行return 在使用各种软件包之前,这种情况会持续一段时间,然后再返回其他任何内容。给我: 如何安装?在github页面的自述文件中使用了(而不是)。我的Go版本是。 问题答案: 这些问题与无效有关。 我认为您已安装Go in 。 因此,将您的路径更改为的值。 看来您的工作空间(GOPATH)位于。 这可能会解决您的问题。 将此添加到bash配置文件的底部,位

  • 我在ubuntu上使用py的3.4版,并有一个具有以下结构的项目: utils文件夹还包含一个< code>__init__。py文件,它提供了许多实用函数。我想包括其中的一些,但它找不到: 我关注了这篇文章,它似乎讨论了同样的问题:如果我打开一个不是Django根目录的目录,PyCharm找不到正确的路径 但是将< code>~/project更改为“source”文件夹并没有帮助。这不是我的一

  • 问题内容: 有没有一种方法可以将应用程序中的node_modules目录移动到/ vendor / node_modules,例如bower对bowerrc文件的处理?我以为可以在package.json中指定它,但是我似乎找不到解决方案。非常感谢您的帮助。 问题答案: 是的,您可以,只需设置NODE_PATH env变量: 根据文档: 如果将环境变量NODE_PATH设置为用冒号分隔的绝对路径列