Go 导入语句位置

Go 导入语句位置,go,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 我明白,如果我在包装声明之后继续导入

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

跑步时

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
我明白,如果我在包装声明之后继续导入,它就可以正常工作了。我无法理解的是,为什么导入需要在包声明之后进行,而不是以这种方式进行。

因为

每个源文件都包含一个定义其所属包的package子句,后面是一组可能为空的导入声明,用于声明其希望使用的内容的包,后面是一组可能为空的函数、类型、变量和常量声明

SourceFile=PackageClause”;“{ImportDecl”;“}{TopLevelDecl”;“}.

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

因为

每个源文件都包含一个定义其所属包的package子句,后面是一组可能为空的导入声明,用于声明其希望使用的内容的包,后面是一组可能为空的函数、类型、变量和常量声明

SourceFile=PackageClause”;“{ImportDecl”;“}{TopLevelDecl”;“}.

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