续前
init函数和main函数
init函数
init函数用于程序执行前做包的初始化,比如初始化包里的变量等。- 每个包可以拥有多个
init函数。 - 包的每个源文件也可以拥有多个
init函数。 init函数不能被其他函数调用,而是在main函数执行前自动被调用。
main函数
go程序必须包含package main,其包下的main函数有且仅有一个,是默认的程序入口。
import导入包
//导入的包必须被使用
import “fmt" //单独引入
import ( //批量引入
"time"
"runtime"
)
变量
变量声明
变量声明格式为:var 变量名 变量类型
var a int
var ( //批量声明
b string
c bool
)
变量初始化
变量初始化格式为:var 变量名 变量类型 = 值表达式
var name string = "xiaoming"
var gender, addr = "male", "Street One" //一次初始化多个变量
类型推导
可以将变量的类型省略,编译器会根据等号右边的值来推导变量的类型完成初始化。
var name = "xiaoming"
var num = 1
短变量声明
在函数内部,可以使用更简略的 := 方式声明并初始化变量。
package main
import (
"fmt"
)
// 全局变量m
var m = 100
func main() {
n := 10
m := 200 //声明局部变量m
fmt.Println(m, n)
}
匿名变量
在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:
func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。
注意事项:
- 函数外的每个语句都必须以关键字开始(var、const、func等)
- :=不能使用在函数外。
- _多用于占位,表示忽略值。
常量
常量的操作方式和变量类似,只是将var更换为const。
const e = 2.7182
const (
pi = 3.14159
g = 9.8
)
结构体
类型名
自定义类型
//将long定义为int64类型
type long int64
类型别名
//TypeAlias是Type的别名,类型仍为Type
type TypeAlias = Type
结构体定义
结构体定义格式为:
type 类型名 struct {
字段名 字段类型
字段名 字段类型
…
}
其中:
- 类型名:标识自定义结构体的名称,在同一个包内不能重复。
- 字段名:表示结构体字段名。结构体中的字段名必须唯一。
- 字段类型:表示结构体字段的具体类型。