voici l'application simple go. Je reçois le message d'erreur "exécuter: ne peut pas exécuter le package non principal", si je lance le code suivant.
package zsdfsdf
import (
"fmt"
)
func Main() {
fmt.Println("sddddddd")
}
pour résoudre ce problème, je dois juste nommer le paquet main.but, mais je ne comprends pas pourquoi je dois le faire. Je devrais pouvoir nommer le paquet comme je veux.
une autre question, je sais que la fonction principale est le point d’entrée du programme, vous en avez besoin. sinon cela ne fonctionnera pas. mais je vois que certains codes qui n'ont pas de fonction principale fonctionnent toujours.
cliquez sur ce lien, l’exemple au bas de la page n’utilisait pas la fonction principale et principale du paquet, et cela fonctionne toujours. juste curieux de savoir pourquoi.
https://developers.google.com/appengine/docs/go/gettingstarted/usingdatastore
Vous devez spécifier dans votre fichier app.yaml quel est votre point d'accès à l'application. Jetez un oeil ici . Vous devez spécifier:
application: zsdfsdf
Voir aussi de ce lien ci-dessus:
"Remarque: lors de l'écriture d'un programme Go autonome, nous plaçons ce code Dans le paquet principal. Le moteur d'exécution de Go App fournit un paquet principal Spécial. Vous devez donc placer le code du gestionnaire HTTP dans un paquet de votre fichier choix (dans ce cas, bonjour). "
Vous avez raison de dire que tous les programmes Go ont besoin de la méthode Main
. Mais il est fourni par Google App Engine. C'est pourquoi votre exemple fourni fonctionne. Votre exemple ne fonctionnerait pas localement (pas sur GAE).
Le point d’entrée de chaque programme go est main.main
, c’est-à-dire une fonction appelée main dans un package appelé main. Vous devez fournir un tel paquet principal.
GAE est une exception cependant. Ils ajoutent un package main
, contenant la fonction main
automatiquement à votre projet. Par conséquent, vous n'êtes pas autorisé à écrire le vôtre.
Vous devez utiliser le package main, une erreur courante commençant par go est type
package Main
au lieu
package main
Une solution pour éviter cette erreur consiste à définir le fichier de point d'entrée somefilename.go
en tant que package principal en ajoutant package main
à la première ligne de entrypopin.
package main
// import statements
import "fmt"
// code below