VIM Go Syntastic:主要重新声明

时间:2014-03-03 23:53:54

标签: vim go syntastic

VIM Syntastic插件适用于.go文件。但有时我想在同一个文件夹中有几个go文件,每个文件都有main()方法,这样我就可以go run xxx每个文件(用于演示)。保存第二个文件(prog2.go)时会出错:

main redeclared in the block previous declaration at prog1.go

如何判断Syntastic忽略这些错误?

更新1

像Rob Pike的“Go Concurrency Patterns”和Francesc Campoy Flores的“Twelve Go Best Practices”这样的官方谈话都将源文件放在同一个文件夹中。所以这个问题不是关于运行go文件的最佳实践,而是如何抑制或忽略此警告。

更新2

在我提交问题here后,作者清楚地回答了我的问题。这正是我所需要的。谢谢大家。

6 个答案:

答案 0 :(得分:21)

你不能,因为这是一个真正的错误。

如果您在一个软件包中有多个.go个文件(例如package main),那么您只能拥有一个main()个功能。

您应该使用go build将应用程序构建为可执行二进制文件。 go run是测试单个文件的快速“黑客”,而不是完整的程序。

您的选择:

  1. 将它们放在同一个包中,然后使用go build
  2. 将“程序”拆分为单独的包。例如$GOPATH/src/mypkg1$GOPATH/src/mypkg2
  3. 使用脚本语言。
  4. 我还建议阅读How To Write Go Code了解如何管理包。

答案 1 :(得分:1)

原因是,一个包中只能有一个主要功能。

答案 2 :(得分:0)

即使显示错误 您可以运行go run命令来测试/运行该文件

$ go run file.go

答案 3 :(得分:0)

如果您使用vim-go插件,则可以将以下内容添加到.vimrc中。

let mapleader = ","    
autocmd FileType go nmap <Leader>rs  :<C-u>GoRun %<cr>

只要按一下,您就可以得到结果。

答案 4 :(得分:0)

如果您使用的是 vs 代码。

<块引用>

请关掉。 扩展去。 问题解决了。

答案 5 :(得分:-1)

我正在学习go,将许多小的“ func main”文件放在同一个目录中并尝试每个文件都很方便,希望使“在此块中重新声明的main”静音。