2015-04-16 2 views
5

Ohne einen Hintergrund in C und nur "Anfänger" -Erfahrung in Go versuche ich herauszufinden, ob main.go tatsächlich erforderlich ist oder nur eine Konvention ist.Wird main.go in einem Go-Projekt benötigt?

Ich bin auf der Suche nach einer einfachen Web-API, aber könnte jemand dies für mich klären?

Antwort

13

main.go als eine Datei ist nicht erforderlich.

Für ausführbare Dateien ist jedoch ein main-Paket mit func main() erforderlich.

Ihr Dateiname kann beliebig aufgerufen werden.

Z. B

myawesomeapp.go

package main 

func main() { 
    fmt.Println("Hello World") 
} 

go run myawesomeapp.go Rennen wird wie erwartet.

4

Für einen Web-Server (eine ausführbare Datei) Sie package main mit einem func main() haben müssen, aber es muss nicht main.go genannt werden - der Dateiname alles, was Sie es sein wollen sein kann. Vom language spec:

Programmausführung

Ein komplettes Programm wird durch die Verknüpfung eines einzigen, unimported Paket erstellt das Haupt-Paket mit allen Paketen genannt es importiert, transitively. Das Hauptpaket muss den Paketnamen main haben und eine Funktion main deklarieren, die keine Argumente akzeptiert und keinen Wert zurückgibt.

func main() { … } 

Die Programmausführung beginnt mit dem Hauptpaket initialisiert und dann die Funktion Haupt aufgerufen wird. Wenn dieser Funktionsaufruf zurückkehrt, wird das Programm beendet. Es wartet nicht auf andere (Nicht-Haupt) -Gorutinen bis abgeschlossen.