2016-10-07 96 views
0

我无法理解为什么这个错误即将到来,无法找到解释,无论我在哪里搜索。导入语句的位置

在运行

package main 

var a = 23 

import (
    "fmt" 
) 

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

我收到此错误

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

我明白,如果我继续进口只是包声明后,它工作正常。我无法理解的是为什么import需要在包声明之后,而不是这样。

回答

4

由于spec限定它这样:

每个源文件由包子句定义所述包到它所属,随后可能是空的组进口申报的该声明包其内容它希望然后使用一组可能为空的函数,类型,变量和常量的声明。

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

这意味着你需要把你的import语句任何其他声明之前。