【问题标题】:Is there a way to import later in golang?以后有没有办法在golang中导入?
【发布时间】:2015-08-20 23:07:29
【问题描述】:

我正在编写一个小型围棋程序。我希望它可以在不同的操作系统上运行,所以我希望使用 go run 而不是包含已编译的文件。问题是它使用了标准库之外的包。我不想依赖拥有包裹的人。我可以使用

package main

import "os/exec"

func main() {
    _ := exec.Command("go", "get","github.com/user/library").Run()
}

但是到那时导入它已经太晚了。我可以看到三个解决方案。

  1. 制作包装脚本。

  2. 交叉编译

  3. 让用户去做

但是我真的很想安装然后导入,有什么办法吗?

【问题讨论】:

  • 这对我来说毫无意义。 a)你真的不应该像那样使用go run b)如果你希望它与go run一起运行,这意味着go已经安装,所以他们可以go get你的程序,它会得到并安装任何东西需要。
  • 交叉编译。 GOOS=linux ./make.bash 在 Go 安装的根目录下,然后是 GOOS=linux go build github.com/me/foo。交叉编译支持对于纯 Go 程序来说非常好,你不能像那样在运行时加载包。
  • 哈哈,这是对 exec 命令的一个非常有创意的用法。自编译 go bins。这可能是可能的,但您需要两个可执行文件:一个使用依赖项设置 $GOPATH,另一个是实际程序。哦,用户将需要一个有效的 go 工具链。分发cross compiled 二进制文件可能会更好
  • 创造力加1

标签: import go exec


【解决方案1】:

只需将您的代码托管在 github 或其他地方。然后想运行程序的人可以使用go install "example.com"获取二进制文件。

如果您不想托管您的代码,您可以指示他们将其放入他们的GOPATH/src/ 并使用go install yourprojectsname

【讨论】:

  • 不,go run 没有(至少在我的 Go1.4.2 系统上);只有go get 获取依赖包。 go get . (?) 或 go get <go-gettable_URL_for_OPs_program/package> 将获得并构建所需的一切。
  • @DaveC:修正了我的错误。
猜你喜欢
  • 2020-08-27
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2021-11-12
  • 2016-12-09
  • 2014-10-13
  • 2022-01-15
  • 2016-03-16
相关资源
最近更新 更多