导入语句位置

时间:2016-10-07 08:56:49

标签: go

我无法理解为什么会出现此错误,无法在我搜索的任何地方找到解释。

正在运行

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

据我所知,如果我在包装声明之后继续进口,那就可以了。我无法理解的是,为什么导入需要在包装声明之后而不是这种方式。

1 个答案:

答案 0 :(得分:4)

因为spec定义了它:

  

每个源文件都包含一个package子句,它定义了它所属的包,后跟一个可能为空的import声明集,声明了要使用其内容的包,后跟一组可能为空的函数声明,类型,变量和常量。

     

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

这意味着您需要在任何其他声明之前放置import语句。