1.初始化全局常量
iota 第一个iota为0 后面每有一个就加一
iota 也可以用在表达式中,如:iota + 50。在每遇到一个新的常量块或单个常量声明时, iota 都会重置为 0( 简单地讲,每遇到一次 const 关键字,iota 就重置为 0 )
const (
a = iota
b = iota
c = iota
)
也可以这样声明
const (
a = iota
b
c
)
声明变量并没有赋值时会自动赋予默认值
声明变量的方式 var 变量名称[声明类型] = 赋值参数 声明函数(方法)
func 函数名称(传入参数 传入参数类型 …) 返回参数 返回参数类型 … {
代码块
}
:= 赋值只能使用与局部变量赋值
a := 2 这个是重新声明一个名称为a的变量
在全局变量中 必须使用 var 进行修饰 不能直接 a = 2
同一类型的多个变量可以声明在同一行
多变量可以在同一行进行赋值
var a, b, c int
a, b, c = 5, 7, "abc"
如果在函数内可以一下方式赋值
a, b, c := 5, 7, "abc"
如果想要交换两个变量的值,则可以简单地使用
a, b = b, a。
"_"的作用
_ 实际上是一个只写变量,你不能得到它的值。这样做是因为 Go 语言中你必须使用所有被声明的变量,但有时你并不需要使用从一个函数得到的所有返回值。
并行赋值也被用于当一个函数返回多个返回值时,比如这里的 val 和错误 err 是通过调用 Func1 函数同时得到:val, err = Func1(var1)。
init 函数
变量除了可以在全局声明中初始化,也可以在 init 函数中初始化。
这是一类非常特殊的函数,它不能够被人为调用,而是在每个包完成初始化后自动执行,并且执行优先级比 main 函数高。
每个源文件都只能包含一个 init 函数。初始化总是以单线程执行,并且按照包的依赖关系顺序执行。
当外部变量的名称和内部变量的名称一样时 优先使用内部变量
测试代码
var a string
var s = "5"
func main() {
a = "G"
println(a)
f1()
n()
m()
n()
}
func f1() {
a := "O"//重新声明一个名称为a的变量 和外部声明的a全局变量不相关
print(a)
f2()
}
func f2() {
print(a)
}
func n() {
print(s)
}
func m() {
s := "O"
print(s)
}
运行结果