函数外只能放置标识符(变量\常量\函数\类型)的声明
变量和常量
函数外的每个语句都必须以关键字开始(var,const,func等)
变量
关键字 var
- GO语言中的变量必须先声明再使用
- 定义全局变量 单个变量用
var 变量名 数据类型
进行定义 - 多个全局变量使用
var ( tag1 string tag2 int)
这种方式进行批量定义 - 全局变量 可以定义不使用,有可能是提供给其他程序调用的。
- 在定义局部变量的时候,可以使用海象运算符进行定义如
tag1 := 18
这种适合使用在局部变量 - 局部变量定义赋值之后 要使用才能通过编辑,不然会报错。为了优化打包后的二进制文件大小。
- 局部变量不能重复声明(同一作用域)
- 变量名推荐使用小驼峰式命名
匿名变量 _
- 自带的 使用_之后表示 后面不使用这个变量,
- 不占用命名控件,不分配内存,不存在重复声明
常量
关键字 const
- 定义了常量之后不能修改
- 在程序运行时候不能改变的量
- 单个const pi = 3.1415926
- 批量声明 const ( name = “jack” age = 18)
- 几个常量是一个数值 tag1,tag2 tag3 都是25
const (
tag1 = 25
tag2
tag3
)
关键字 iota
- 是go的常量计数器,只能在常量的表达式中使用
- 在const关键字出现的时候被重置为0,const每新增一行常量声明iota计数一次(iota+1)使用iota定义枚举时候很有用
- 配合匿名变量_可以跳过某些数值
const (
studentid1 = iota*10
studentid2
_
studentid3
)
studentid1 = 0
studentid2 = 10
studentid3 = 30
变量作用域
- 全局作用域
- 函数作用域
- 先在函数内部找变量,找不到往外层找
- 函数内部的变量,外部是访问不到的
- 代码块作用域
var x = 100
func f1() {
name := "理想"
fmt.Println(x, name)
}
func main() {
f1()
if i := 10; i < 18 {
fmt.Println("乖乖上学")
}
for j := 0; j < 5; j++ {
fmt.Println(j)
}
}