3B.3 数据结构
// package PkgName; DeclList[0], DeclList[1], ...
type File struct {
Pragma Pragma // 编译指令,嵌入在源代码的注释中,形如:go://xxxx, 可以忽略不予考虑
PkgName *Name // 该文件的包名
DeclList []Decl // 该文件中包含的顶级声明
EOF Pos
node // 内嵌结构体,使 File 实现 nodes.go 中定义的 Node 接口
}3.3.1 声明(Declaration)
type A struct{} // 声明一个结构体类型,其名字是 A
type B interface{} // 声明一个接口类型,其名字是 B
const a = 1 // 声明一个常量,将其命名为 a,并将其初始化为 1. 因为常量值无法修改,所以常量的声明必须与初始化在一条语句内完成。
var b string // 声明一个变量,将其命名为 b
func sum(i, j int) int // 声明一个函数,将其命名为 sum, 没有函数体。可以通过编译指令 `go:linkname` 将其与其他地方的函数链接起来
func sub(i, j int) int { // 声明一个函数,将其命名为 sub, 并包含函数体
return i - j
}
type Str string // 声明一个类型 Str, 其 underlying type 是 string
type StrAlias = string // 声明一个类型别名 StrAlias,其与 string 类型等价3.3.2 表达式(Expression)
3.3.3 语句(Statement)
3.3.4 其他
最后更新于