如何检查go app是否可构建?

时间:2017-01-10 05:37:30

标签: go compilation

我编写了一些代码然后将应用程序构建到输出文件,但有时我只想检查应用程序是否可构建,即没有错误并生成编译输出,但实际上没有写入输出文件。

我尝试了这个变种,似乎有效:

go build -o /dev/null myapp

但我怀疑必须有更多的官员"去检查它是否可以构建。

请指教!

4 个答案:

答案 0 :(得分:2)

  

如何检查go app是否可构建?

据我了解您的问题,您想查看您正在编辑的文件是否没有错误。

然后您可以将vim-go plugin用于vim。

然后设置.vimrc以创建快捷方式:

"shortcut for vim-go
au FileType go nmap <leader>r <Plug>(go-run)
au FileType go nmap <leader>b <Plug>(go-build)
au FileType go nmap <leader>t <Plug>(go-test)
au FileType go nmap <leader>c <Plug>(go-coverage)

当我想看到我的文件没有错误时,我将此作为我的日常工作生活我只需输入\+b。然后它将输出错误而不在终端中键入go build

希望它有所帮助。

答案 1 :(得分:1)

要检查包或应用是否可构建,go build是&#34;官方&#34;方式。

你所做的是最简单的方法。在我看来,你应该坚持下去。或者你可以这样做:

go build -o delme && rm delme

但它有点慢,因为它必须写入结果然后被删除,但这个解决方案是独立于平台的(因为/dev/null在Windows上不存在)。

在构建命令(main包)时,根据定义go build将创建结果并将结果保留在当前工作目录中。如果你建立一个正常的&#34;包(非main),结果将被丢弃。详情请见What does go build build?

因此,如果您不得不使用-o /dev/null参数或手动删除结果,那么您可以“转换”#34;将您的main个套餐发送给非main,我们将其称为main2。并添加一个新的main包,除了导入和调用main2.Main()之外别无其他任何操作。构建main2包不会留下任何文件。

E.g。 myapp/main.go

package main

import "myapp/main2"

func main() { main2.Main() }

myapp/main2/main2.go

// Every content you originally had in main.go

package main2

func Main() {
    // ...
}

答案 2 :(得分:0)

所有文件的一种方式是gofmt -e my_file.go,但是:

  • 不能很好地扩展
  • 这实际上并未报告go build可能出现的所有错误。

含义:go build -o /dev/null可能仍然是更彻底的方法。

仅用于验证语法和结构:see gotype

答案 3 :(得分:0)

我使用VSCode并且我发现在使用this扩展名时,它比Sublime更好。 保存文档时,它会很好地格式化。它显示了错误,因为我在golint的帮助下编写代码使得开发变得易于管理。

您也可以像gofmt一样单独使用golint。 你也可以尝试去看兽医。关于什么用什么时候会有争论,但我建议你尽可能使用两者。