3 回答
TA贡献1869条经验 获得超4个赞
错误是“函数体之外的非声明语句”。为什么在 Go 中会发生这种情况?
因为这就是 Go 定义的工作方式。从规格:
每个源文件都包含一个 package 子句,定义它所属的包,然后是一组可能为空的导入声明,这些声明声明它希望使用其内容的包,然后是一组可能为空的函数、类型、变量声明,和常量。
这意味着import 语句的唯一有效位置是package
子句与函数、类型、变量和常量的声明之间。
在你的例子中,你有一个变量声明,所以 Go 编译器知道不会再有 import 语句。然后它看到你的错误导入语句,看到它是一个非声明,并正确地生成你观察到的错误。
TA贡献1809条经验 获得超8个赞
在 Go 中通常有两种导入包的方法:
import "fmt"
import "time"
或者
import (
"fmt"
"time"
)
诀窍是你不能import在你的第二个例子中混合使用和其他东西。
package main
import (
"fmt"
)
var test = "testing" //<-- This does not comply with the definition of a Go file
import "time"
func main() {
currtime := time.Now()
fmt.Println(test)
fmt.Println(currtime)//Output: 16:44:53
}
在这里,您可以找到一份完备的.go 文件剖析文档。
每个 .go 文件的结构都是相同的。
首先是 package 子句,前面可以有可选的注释,通常描述包的目的。
然后是零个或多个进口申报。
第三部分包含零个或多个顶级声明
- 3 回答
- 0 关注
- 109 浏览
添加回答
举报