【问题标题】:Avoid typing out all go files in the main package when "Go run"-ng避免在 "Go run" 时将主包中的所有 go 文件都输入 -ng
【发布时间】:2014-01-04 03:10:41
【问题描述】:

main 包中有多个.go 文件时,我需要在执行go run 时将它们全部列出。

所以当我有 main.goa.gob.go 并且它们都属于主包时,我需要输入 go run main.go a.go b.go 才能在其他 2 个 go 文件中使用函数和结构。但是,go build 命令足够智能,可以自动将所有文件链接在一起。

我是否对 Go 有误解,或者这是否正常(在执行 go run 时列出了 main 包中的所有文件)?

【问题讨论】:

    标签: go


    【解决方案1】:

    简短的回答是:您需要将它们全部列出。如果你很绝望,你可以用 shell 技巧来做到这一点。我通常只是写一个 shell 脚本到go build 然后运行生成的可执行文件,因为它太烦人了。

    # this works unless you have _test.go files
    go run *.go
    
    # if you really want to... enable extended glob
    shopt -s extglob
    # so you can do something like this (matches all .go except *_test.go files)
    go run !(*_test).go
    

    看看这个帖子:https://groups.google.com/forum/#!topic/golang-nuts/EOi0VAQNA4c

    【讨论】:

      【解决方案2】:

      如果你的源码在 $GOPATH/src 如

      $GOPATH/src/somedir/main.go
      $GOPATH/src/somedir/a.go
      $GOPATH/src/somedir/b.go
      

      执行“go install somedir”将编译并安装 somedir 二进制文件到 $GOPATH/bin

      无需单独列出文件

      “go install”自行查找所有文件。

      我使用 go 的常见工作周期是(来自我的 bash 提示符): $清除;去安装 myproj && $GOPATH/bin/myproj

      清除屏幕,构建并安装“myproj”,然后运行它

      所以,在我更改代码后,我只需按 Ctrl-C,向上箭头,然后输入。

      整个循环时间约为 1 秒(小到开始的东西)

      【讨论】:

      • 不过,他问的是go run
      • 好点,我只是做了一个(错误的)假设,即他不知道如何在 go 中制作可运行的二进制文件(我最初在学习 go 时遇到了这个问题)
      • 是的,我通常会编写一个名为 run.sh 的脚本,它的功能与您的类似;通常我使用go build 进行本地构建,而不是go install
      猜你喜欢
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      相关资源
      最近更新 更多