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!
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.
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
Cela se produit généralement lorsque vous avez un fichier, par exemple. foo_test.go vide ou sans déclaration de paquet.
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")
}
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
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.