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后,作者清楚地回答了我的问题。这正是我所需要的。谢谢大家。
答案 0 :(得分:21)
你不能,因为这是一个真正的错误。
如果您在一个软件包中有多个.go
个文件(例如package main
),那么您只能拥有一个main()
个功能。
您应该使用go build
将应用程序构建为可执行二进制文件。 go run
是测试单个文件的快速“黑客”,而不是完整的程序。
您的选择:
go build
。$GOPATH/src/mypkg1
和$GOPATH/src/mypkg2
我还建议阅读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”静音。