web-dev-qa-db-fra.com

Go failing - 'package' attendu, trouvé 'EOF'

J'ai eu du mal à exécuter un programme golang simple sur une machine virtuelle alimentée par vagrant . Ce sont les champs pertinents de mon go env:

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

Voici le programme que j'essaye d'exécuter (situé dans/usr/local/src/go/programme):

package program

import (
    "fmt"
)

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

Ceci, le résultat que je reçois:

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'

Prenez en compte que c'est un programme complètement faux. Ce qui est étrange, c’est que cela fonctionne totalement dans un environnement différent… __. Qu'est-ce qui me manque ici?

Merci beaucoup!

12
ThisIsErico

Le problème n'était ni avec GOROOT ni GOPATH. L'installation de go a échoué à un moment donné, laissant le tout instable (fichiers créés mais complètement vides). Lors du réapprovisionnement de la machine virtuelle, le module go vérifiait si les fichiers existaient. Comme ils l'ont fait, il a fallu reconnaître que l'installation avait déjà eu lieu.

Un nettoyage et une nouvelle installation à partir de zéro ont résolu le problème.

8
ThisIsErico

L'utilisation de VS Code for GO et le même problème… .. L'enregistrement du fichier 'Ctrl + S' sous Windows a résolu le problème.

Référence: Réponse de Nico

18
Code_Yoga

Cela se produit généralement lorsque vous avez un fichier, par exemple. foo_test.go vide ou sans déclaration de paquet.

10
Alessandro Resta

Pour moi, cela s’est également produit avec Atom + Go Plus + Terminal Plus. Le problème était que le premier groupe n'était pas sur la ligne "correcte". 

NOTE: Go Plus met en garde sur la syntaxe lors de l'enregistrement, mais j'avais importé ce fichier après l'avoir créé localement avec VIM.

Erreur:

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

Correct:

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

Comme le disait déjà Nico, lorsque vous créez un nouveau projet et un nouveau fichier main.go, cette erreur apparaîtra lorsque le fichier n’est pas enregistré. Enregistrez le fichier (ctrl + s) et cette erreur disparaîtra sous Mac et Windows . J'ai rencontré le même problème et je viens de le résoudre en faisant Ctrl + S sur le fichier main.go 

0
sonu1986

En tant que nouvel utilisateur de référence, je suis tombé sur cette réponse en cherchant quelqu'un pour me dire que je devais commencer mes scripts avec package main bien que mon erreur fût un peu différente, 

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

C'est vraiment évident maintenant, mais bon, c'est comme ça que ça se passe.

0
kpie