2016-10-07 7 views
0

Ich kann nicht verstehen, warum dieser Fehler kommt und kann keine Erklärung finden, wo immer ich gesucht habe.Position der Importanweisung

Auf

package main 

var a = 23 

import (
    "fmt" 
) 

func main() { 
    fmt.Println(a) 
} 

läuft Ich erhalte diesen Fehler

# command-line-arguments 
./test.go:5: syntax error: non-declaration statement outside function body 

Ich verstehe, dass, wenn ich Import einfach weiter nach Paketdeklaration funktioniert es gut. Was ich nicht verstehen kann ist, warum der Import nach der Paketdeklaration erfolgen muss und nicht auf diese Weise.

Antwort

4

Da die spec definiert es so:

jede Quelldatei besteht aus einem Paket-Klausel das Paket zu definieren, auf die sie, gefolgt von einem möglicherweise leeren Satz von Einfuhranmeldungen gehört, dass es Pakete, deren Inhalt erklären wünscht zu verwenden, gefolgt von einer möglicherweise leeren Menge von Deklarationen von Funktionen, Typen, Variablen und Konstanten.

SourceFile = PackageClause ";" { ImportDecl ";" } { TopLevelDecl ";" } .

Was bedeutet, dass Sie benötigen, um Ihre import Aussagen vor jeder anderen Erklärung zu setzen.

Verwandte Themen