1.局部变量
定义在函数内部的变量以及函数的形参称为局部变量
作用域:从定义一行开始直到其所在的代码块结束
生命周期:从程序运行到定义哪一行开始分配存储空间到程序离开该变量所在的作用域
2.全局变量
定义在函数外面的变量称为全局变量
作用域范围:从定义那行开始直到文件结尾
生命周期:程序一启动就会分配存储空间,直到程序结束
注意:
1)作用域相同不能定义名称相同的变量
2)go语言中无论是全局变量还是局部变量,只要定义一个变量都有默认的初始值。
3)定义的局部变量或者导入的包没有被使用,编译器会报错
package main
import "fmt"
var num1 int //全局变量
func main(){
var num1 int //局部变量
}
3.常量
GO语言常量分为:整型常量、实型常量、字符常量、字符串常量、自定义常量
自定义常量 :
const 常量名称 数据类型 = 值
const 常量名称 = 值
连续定义
const 常量名1,常量名2 int =值1,值2
常量组/多重赋值
const(
num3=100
num4=200
num7 //200
num8 //200
num5,num6 =100,200
num9,num10 //100,200
)
注意要点
1)定义的常量没有被使用不会报错
2)常量组中如果上一行常量有初始值,但是下一行没有,那么下一行会赋值上一行的值
枚举常量
const(
枚举元素1 =iota //0
枚举元素2=iota //1
枚举元素3 //不写可自动递增
)
使用iota标识符实现从0开始递增的枚举
iota注意点:
在同一个常量组中,iota从0开始递增,每行递增1
在同一常量组中,只要上一行出现了iota,后续会自动递增
在同一个常量组中,如果iota被中断,那么必须显示恢复
iota也支持常量组+多重赋值,在同一行iota值相同
iota自增默认数据类型为int类型,也可以显示指定类型
package main
import "fmt"
func main(){
const(
aa = iota //0
bb = iota //1 在同一个常量组中,iota从0开始递增,每行递增1
cc //2 在同一常量组中,只要上一行出现了iota,后续会自动递增
dd = 666 //666 中断
ee //666 中断后没有回复
//如果iota被中断,那么必须显示恢复。当前常量组第一次出现iota的复方开始,每一行递增1
ff = iota //5
)
// iota也支持常量组+多重赋值,在同一行iota值相同
const(
a,b=iota,iota //a=0 b=0
c,d=iota,iota //c=1 d=1
)
// iota自增默认数据类型为int类型,也可以显示指定类型
const(
gg float32 =iota //0.0 指定类型后,后续都会按照指定类型自增
hh //1.0
jj //2.0
)
}