【问题标题】:Golang, importing packages from Github requests me to remember the Github URL?Golang,从 Github 导入包要求我记住 Github URL?
【发布时间】:2016-12-07 14:34:36
【问题描述】:

我对 Golang 很陌生。我看到在 Golang 中你可以直接从 Github 导入包,比如:

import "github.com/MakeNowJust/heredoc"

这是否意味着我必须记住这个 URL 才能使用这个包?恕我直言,这并不酷。如果后来包的作者将其删除或更改了 URL 怎么办?有什么想法吗?

【问题讨论】:

  • 如果包作者删除他们的包,你会在任何其他语言中遇到同样的问题。您可以使用glide 之类的工具来下载和剥离供应商包的 vcs,以将包文件推送到您自己的仓库。
  • 另见wiki entry on package management for Go。今天大肆宣传的其他工具有(排名不分先后):godepgovendorgb
  • 这实际上是一个有趣的问题。也许措辞不完美,但它非常类似于整个供应商和依赖管理讨论
  • 嗯,你需要一些方法来引用外部依赖。我不明白它怎么能比只在那里有网址更简单????

标签: github go package


【解决方案1】:

我建议您阅读How to Write Go Code 文档和this 博客文章。

您在导入行中看到的路径不是 url,而只是包所在的路径(通常相对于 $GOROOT/src/pkg$GOPATH/src)。所以你的包heredoc很可能位于目录$GOPATH/src/github.com/MakeNowJust/heredoc

使用外部软件包的推荐方法是通过go get 下载并安装它们。您可能想查看 go get --help 的 go get 文档。

【讨论】:

  • 所以这基本上是说:“不,你不能直接从 Go 的 Github 导入包。它的教程让它听起来像那样。”对吗?
  • 是的,你必须下载一个包才能使用它。
  • github.com/MakeNowJust/heredoc is 是一个 url,而“RTFM”并不是投票所暗示的高质量答案。
  • github.com/MakeNowJust/heredo 不是有效的 URL - 存在主机名,这意味着绝对 URL,但 RFC3986 section 4.3 指定绝对 URI 必须具有强制方案前缀(http、 https、ftp 等)。
【解决方案2】:

别担心,伙计!您可以使用glide 工具进行包管理

【讨论】:

【解决方案3】:

import 语句引用的路径只是附加到$GOPATH/src。所以导入语句基本上说“导入位于$GOPATH/src/github.com/MakeNowJust/heredoc的包”

如果包的作者后来删除了它或更改了 URL 怎么办?

只要您已经在预期位置拥有该包的源文件,即使 repo 已移动,它也应该包含在内。

【讨论】:

    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 2021-10-02
    • 2010-11-07
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多