wake-up-neo.net

Fehlgeschlagen - erwartetes 'Paket', 'EOF' gefunden

Ich hatte Schwierigkeiten, ein einfaches Golang-Programm in einer virtuellen Maschine auszuführen, die von vagrant ..__ betrieben wird. Dies sind die relevanten Felder meines go env:

GOARCH="AMD64"
GOPATH="/usr/local/src/go"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_AMD64"

Dies ist das Programm, das ich ausführen möchte (in/usr/local/src/go/program):

package program

import (
    "fmt"
)

func main() {
    fmt.Print("Aloha")
}

Dies ist die Ausgabe, die ich bekomme:

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'

Bedenken Sie, dass dies ein komplett falsches Programm ist. Das Seltsame ist, dass es total in einer anderen Umgebung funktioniert ... Was fehlt mir hier?

Danke vielmals!

12
ThisIsErico

Das Problem bestand weder mit GOROOT noch mit GOPATH. Die Go-Installation schlug irgendwann fehl und das Ganze wurde instabil (Dateien wurden erstellt, aber vollständig leer). Bei der erneuten Bereitstellung der virtuellen Maschine wurde vom go-Modul geprüft, ob die Dateien vorhanden sind. Dabei wurde vorausgesetzt, dass die Installation bereits stattgefunden hatte.

Eine Neuinstallation und eine Neuinstallation von Grund auf haben das Problem gelöst.

8
ThisIsErico

VS-Code für GO verwendet und war mit demselben Problem konfrontiert. Das Speichern der Datei 'Strg + S' unter Windows hat das Problem behoben.

Referenz: Beantwortet von Nico

18
Code_Yoga

Dies geschieht normalerweise, wenn Sie eine Datei haben, z. foo_test.go leer oder ohne Paketdeklaration.

10

Für mich geschah dies auch mit Atom + Go Plus + Terminal Plus. Das Problem war, dass die führende Klammer nicht in der "richtigen" Linie war. 

NOTE: Go Plus warnt beim Speichern vor Syntax, aber ich hatte diese Datei importiert, nachdem ich sie lokal mit VIM erstellt hatte. Daher wurden mir nie die Fusselfehler angezeigt ...

Error:

package main
import "fmt"
func main() 
{
    fmt.Println("hello world")
}

Richtig:

package main
import "fmt"
func main() {
    fmt.Println("hello world")
}
2
user1873858

Speichern Sie einfach zuerst die Datei und starten Sie dann cammand.it.

go run main.go

1
Javed

Wie bereits von Nico vorgeschlagen, erscheint diese Fehlermeldung, wenn Sie ein neues Projekt und eine neue main.go-Datei erstellen, wenn die Datei nicht gespeichert wird. Speichern Sie die Datei (Strg + s), und dieser Fehler wird in Mac & Windows verschwinden Ich war mit dem gleichen Problem konfrontiert und habe es durch Strg + S in der Datei main.go gelöst. 

0
sonu1986

Als neuer Go-User bin ich auf diese Antwort gestoßen und habe nach jemandem gesucht, der mir sagt, dass ich meine Skripte mit package main starten muss, obwohl mein Fehler ein wenig anders war. 

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

Es ist jetzt offensichtlich, aber so geht es.

0
kpie