我无法理解为什么会出现此错误,无法在我搜索的任何地方找到解释。
正在运行
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
据我所知,如果我在包装声明之后继续进口,那就可以了。我无法理解的是,为什么导入需要在包装声明之后而不是这种方式。
答案 0 :(得分:4)
因为spec定义了它:
每个源文件都包含一个package子句,它定义了它所属的包,后跟一个可能为空的import声明集,声明了要使用其内容的包,后跟一组可能为空的函数声明,类型,变量和常量。
SourceFile = PackageClause ";" { ImportDecl ";" } { TopLevelDecl ";" } .
这意味着您需要在任何其他声明之前放置import
语句。