web-dev-qa-db-ja.com

失敗する-「パッケージ」が必要で、「EOF」が見つかりました

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'

これは完全に偽のプログラムであることを考慮してください。奇妙なことは、異なる環境で完全に機能することです。ここで何が欠けていますか?

どうもありがとう!

13
ThisIsErico

問題はGOROOTGOPATHでもありませんでした。 goインストールはある時点で失敗し、全体が不安定になりました(ファイルは作成されますが、完全に空になります)。仮想マシンを再度プロビジョニングする際、goモジュールはファイルが存在するかどうかを確認しました。彼らがしたように、インストールがすでに行われていることは当然でした。

最初からクリーンアップして新規インストールすることで問題が解決しました。

10
ThisIsErico

GOにVS Codeを使用し、同じ問題に直面しました。 Windowsで「Ctrl + S」ファイルを保存すると、問題が修正されました。

参照: ニコによる回答

29
Code_Yoga

これは通常、ファイルがある場合に発生します。 foo_test.go emptyまたはパッケージ宣言なし。

14

私にとっても、これは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")
}
2
tdensmore

最初にファイルを保存し、cammand.itを実行してください。

main.goを実行します

1
Javed

Nicoが既に提案したように、新しいプロジェクトと新しいmain.goファイルを作成すると、ファイルが保存されていないときにこのエラーが表示されます。ファイル(ctrl + s)を保存すると、このエラーはMacとWindowsの両方で消えます。私は同じ問題に直面し、main.goファイルでctrl + Sを実行することで解決しました。

0
sonu1986

新しいgoユーザーとして、私はこの答えに出くわして、package mainでスクリプトを開始する必要があることを教えてくれる人を探しました。

... expected 'package', found 'import'

今では明らかです。しかし、そうです。

0
kpie