it-swarm.com.de

go run: Nicht-Hauptpaket kann nicht ausgeführt werden

hier die einfache Anwendung. Ich erhalte den Fehler "go run: kann kein Hauptpaket ausführen", wenn ich den folgenden Code ausführen.

package zsdfsdf

import (
    "fmt"
)

func Main() {
    fmt.Println("sddddddd")
}

um das Problem zu beheben, muss ich nur das Paket main nennen. Aber ich verstehe nicht, warum ich das tun muss. Ich sollte das Paket nach Belieben benennen können.

eine andere Frage, ich weiß, Hauptfunktion ist der Einstiegspunkt des Programms, Sie brauchen es. Sonst funktioniert es nicht. aber ich sehe, dass einige codes, die keine hauptfunktion hatten, noch funktionieren.

klicken Sie auf diesen Link. Das Beispiel unten auf der Seite hat die Haupt- und Hauptfunktionen des Pakets nicht verwendet, und es funktioniert immer noch. nur neugierig warum.

https://developers.google.com/appengine/docs/go/gettingstarted/usingdatastore

26
qinking126

Sie müssen in Ihrer app.yaml-Datei angeben, was Ihr App-Zugriffspunkt ist. Schauen Sie hier . Sie müssen Folgendes angeben:

application: zsdfsdf

Siehe auch aus dem obigen Link:

"Hinweis: Beim Schreiben eines eigenständigen Go - Programms würden wir diesen Code In das Paket main einfügen. Die Go App Engine - Laufzeitumgebung enthält ein besonderes main - Paket, daher sollten Sie den HTTP - Handler - Code in ein Paket Ihrer Wahl (in diesem Fall Hallo). "

Es ist richtig, dass alle Go-Programme die Main-Methode benötigen. Es wird jedoch von Google App Engine bereitgestellt. Deshalb funktioniert Ihr Beispiel. Ihr Beispiel würde lokal nicht funktionieren (nicht auf GAE).

6
Sam P

Der Einstiegspunkt jedes go-Programms ist main.main, d. H. Eine Funktion namens main in einem Paket namens main. Sie müssen ein solches Hauptpaket bereitstellen.

GAE ist jedoch eine Ausnahme. Sie fügen Ihrem Projekt ein main-Paket hinzu, das automatisch die main-Funktion enthält. Daher dürfen Sie nicht selbst schreiben.

25
tux21b

Sie müssen das main package verwenden. Ein häufiger Fehler, der mit go beginnt, ist type

package Main

stattdessen

package main
6
Pablo Cegarra

Um diesen Fehler zu vermeiden, definieren Sie die Einstiegspunktdatei somefilename.go als Hauptpaket, indem Sie package main als erste Zeile des entrypopin hinzufügen

package main

// import statements 
import "fmt"

// code below
0