1. go 变量声明:
- 标准声明:
var 变量名 变量类型
var v0 int // 默认值0
var v1, v2 string // 默认值空字符串
- 批量声明:
var (
变量名 变量类型
变量名 变量类型
...
)
var (
v3 bool // 默认值 false
v4 float32 // 默认值0
)
- 简短声明(声明并赋值):
变量名1, 变量名2, ... := 表达式1, 表达式2, ...
v5, v6 := 100, true
简短模式存在以下局限:
①需要显式初始化数据;
②不能显式提供数据类型;
③只能用在函数内部;
2. 两个数据相互交换
v7, v8 := "hello", "go"
fmt.Println(v7, v8) // hello go
v7, v8 = v8, v7
fmt.Println(v7, v8) // go hello
3. 匿名(缺省)变量
使用
_
表示缺省变量,缺省变量是不会被分配内存空间的,所以不会占用内存;缺省的变量是被抛弃了,所以不能使用该变量;
func main() {
v9, _ := fetchData()
_, v10 := fetchData()
fmt.Println(v9, v10) //100 150
}
func fetchData() (int, int) {
return 100, 150
}
4. 变量的作用域
- 变量的类型可以分为以下3种:
函数内定义的变量称为
局部变量
;
函数外定义的变量称为全局变量
;
函数定义中的变量称为形式参数
;
- 局部变量:局部变量不是一直存在的,它只在定义它的函数被调用后存在,函数调用结束后这个局部变量就会被销毁。
- 全局变量:①全局变量只需要在一个源文件中定义,就可以在所有源文件中使用;②全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写。
注意:全局变量与局部变量名称可以相同,但是函数体内的局部变量具有较高优先级;
- 形式参数:形式参数只在函数调用时才会生效,函数调用结束后就会被销毁,在函数未被调用时,函数的形参并不占用实际的存储单元,也没有实际值。
网友评论