Vagrantを搭載した仮想マシンで簡単なgolangプログラムを実行しようとして苦労していました。これらは私のgo env
の関連フィールドです:
GOARCH="AMD64"
GOPATH="/usr/local/src/go"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_AMD64"
これは私が実行しようとしているプログラムです(/ usr/local/src/go/programにあります):
package program
import (
"fmt"
)
func main() {
fmt.Print("Aloha")
}
これ、私が得る出力:
main.go:4:5:
/usr/local/go/src/fmt/doc.go:1:1: expected 'package', found 'EOF'
package runtime:
/usr/local/go/src/runtime/alg.go:1:1: expected 'package', found 'EOF'
これは完全に偽のプログラムであることを考慮してください。奇妙なことは、異なる環境で完全に機能することです。ここで何が欠けていますか?
どうもありがとう!
問題はGOROOT
もGOPATH
でもありませんでした。 goインストールはある時点で失敗し、全体が不安定になりました(ファイルは作成されますが、完全に空になります)。仮想マシンを再度プロビジョニングする際、goモジュールはファイルが存在するかどうかを確認しました。彼らがしたように、インストールがすでに行われていることは当然でした。
最初からクリーンアップして新規インストールすることで問題が解決しました。
GOにVS Codeを使用し、同じ問題に直面しました。 Windowsで「Ctrl + S」ファイルを保存すると、問題が修正されました。
参照: ニコによる回答
これは通常、ファイルがある場合に発生します。 foo_test.go emptyまたはパッケージ宣言なし。
私にとっても、これはAtom + Go Plus + Terminal Plusを使用して発生しました。問題は、先頭のブラケットが「正しい」行にないことでした。
[〜#〜] note [〜#〜]:Go Plusは保存時に構文について警告しますが、VIMでローカルに作成した後にこのファイルをインポートしたため、リントエラーは表示されませんでした。 ..
エラー:
package main
import "fmt"
func main()
{
fmt.Println("hello world")
}
正しい:
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
最初にファイルを保存し、cammand.itを実行してください。
main.goを実行します
Nicoが既に提案したように、新しいプロジェクトと新しいmain.goファイルを作成すると、ファイルが保存されていないときにこのエラーが表示されます。ファイル(ctrl + s)を保存すると、このエラーはMacとWindowsの両方で消えます。私は同じ問題に直面し、main.goファイルでctrl + Sを実行することで解決しました。
新しいgoユーザーとして、私はこの答えに出くわして、package main
でスクリプトを開始する必要があることを教えてくれる人を探しました。
... expected 'package', found 'import'
今では明らかです。しかし、そうです。