2014-03-03 84 views
2

VIM Syntastic插件可與.go文件一起使用。但有時我想在同一個文件夾中有幾個go文件,並且每個都使用main()方法,這樣我就可以將每個文件(用於演示文稿)都寫入go run xxx。這將導致錯誤,當我保存了第二個文件(prog2.go):VIM Go Syntastic:重新聲明

main redeclared in the block previous declaration at prog1.go

我怎麼能告訴Syntastic忽略這些錯誤?

更新1

像羅布派克的「去併發模式」和的Francesc Campoy弗洛雷斯該負責人去談判‘十二圍棋最佳實踐’把所有的源文件相同的文件夾。所以這個問題不是關於運行go文件的最佳做法,而是如何抑制或忽略此警告。

更新2

後,我提交的問題here,筆者清楚地回答我的問題。這正是我需要的。感謝所有。

回答

12

你不能,因爲這是一個真正的錯誤。

如果在一個包中有多個.go文件(即package main),則只能有一個main()函數。

您應該使用go build將您的應用程序構建爲可執行二進制文件。 go run是用於測試單個文件的快速「黑客」,而不是完整的程序。

您的選擇:

  1. 把它們在同一個包,並使用go build
  2. 將你的'程序'分成不同的包。例如$GOPATH/src/mypkg1$GOPATH/src/mypkg2
  3. 使用腳本語言。

我還建議您閱讀How To Write Go Code瞭解如何管理軟件包。

+0

選項1是我更喜歡的選擇,這就是Go的官方說明,它們都將.go文件放在同一個文件夾中。請參閱官方演講bestpractices [此處](https://code.google.com/p/go/source/browse/?repo=talks#hg%2F2013%2Fbestpractices)以及存儲庫中的其他會話。但VIM Syntastic每次將這些文件保存在同一個文件夾時都會發出警告。這就是我所要求的。我認爲應該有一個功能來壓制警告,對嗎?我們知道在這種情況下這不是一個錯誤。 – user2647545

+0

@ user2647545這些是示例程序。正如你會注意到的,它們都是'package main',但每個都有'main()'塊,因爲它們是爲了獨立運行的。回購有點誤導(不幸)。只需將它們分成不同的文件夾。如果你真的必須改變,請在[Syntastic GitHub回購](https://github.com/scrooloose/syntastic/tree/master/syntax_checkers/go)上提出問題,然後詢問維護人員。 – elithrar