什么是变量?
变量相当于内存中的一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,同样的道理,通过变量名,程序可以访问到变量的值。
变量分类(作用域)
全局变量
在Go函数外部定义的变量,即为 全局变量(所有函数都可以调用)
// 案例演示的是 全局变量package mainimport "fmt"var a = 123 // 注意全局变量不能使用 := 来声明变量和赋值// 批量定义全局或局部变量时,也可以采用如下方式var (b = "name"c = "true")func main(){fmt.Println("a =",a,"b =",b,"c =",c)}
注意:全局变量不能使用 := 来声明变量并赋值
局部变量
在Go函数内部定义的变量,即为 局部变量(只有函数内部可以调用)
// 案例演示的是 局部变量package mainimport "fmt"func main(){var a := 123 // 局部变量才可以使用 := 来声明变量和赋值fmt.Println("a =",a)}
注意:只有局部变量才可以使用 := 来声明变量并赋值
变量三步骤
- 变量声明(或叫变量定义)
- 变量赋值
- 变量使用
变量初始化 = 变量声明 + 变量赋值
快速入门
// 演示变量使用案例package mainimport "fmt"func main(){var i int //声明一个变量i,int为变量类型i = 100 //给变量i赋值fmt.Println("i =", i) //使用变量i}
注意事项
- 变量表示内存中的一个存储区域
- 该区域有自己的名称(变量名)和 类型(数据类型)
- 不同数据类型的变量之间,不能直接赋值(例如把float类型的变量值 直接 赋给int类型的变量,是不允许的)
package mainimport "fmt"func main(){var i inti = 100 // 此时变量i是int类型fmt.Println("i =", i)i = 3.14 // 3.14属于float类型,和i之前的int类型定义冲突,编译器会报错fmt.Println("i =", i)}
变量初始化
变量初始化 = 变量声明 + 变量赋值
变量声明后,若不赋值,则变量为默认值
| 变量数据类型 | 默认值 |
|---|---|
| int 整数型 | 0 |
| float 浮点数 | 0 |
| string 字符串 | “” 即为空 |
| bool 布尔型 | false |
指定数据类型
// 演示指定数据类型并赋值package mainimport "fmt"func main(){var a intvar b float32var c float64var d stringvar e boolfmt.Println("a =", a)fmt.Println("b =", b)fmt.Println("c =", c)fmt.Println("d =", d)fmt.Println("d =", e)}
类型推导
根据变量值,编译器会自行判断变量的数据类型(即:类型推导)
// 演示数据类型推导package mainimport "fmt"func main(){var a = -11.11fmt.Printf("a的变量类型是%T\n", a)}
简短声明(仅限局部变量)
省略var,使用:=来声明变量并赋值
// 演示简洁声明package mainimport "fmt"func main(){a := 123b := truefmt.Println("a =", a)fmt.Println("b =", b)}
变量批量初始化
在编程中,有时我们需要一次性申明多个变量,Go中也是支持批量声明变量的
相同类型批量声明
// 批量声明-方式1(批量声明的变量具有相同的数据类型)package mainimport "fmt"func main(){var a,b,c,d inta = 1b = 2c = 3d = 4fmt.Println("\n","a =",a,"\n","b =",b,"\n","c =",c,"\n","d =",d)}
相同类型批量声明并赋值
// 批量声明-方式2(批量声明的变量具有相同的数据类型)package mainimport "fmt"func main(){var a,b,c,d int = 1,2,3,4fmt.Println("\n","a =",a,"\n","b =",b,"\n","c =",c,"\n","d =",d)}
不同数据类型批量声明并赋值
// 批量声明-方式3(批量声明的变量具有不相同的数据类型)package mainimport "fmt"func main(){var a, b, c, d = 1, "string", true, 3.14fmt.Println("\n","a =",a,"\n","b =",b,"\n","c =",c,"\n","d =",d)}
不同数据类型批量简洁声明并赋值
// 批量声明-方式4(批量简洁声明的变量具有不相同的数据类型)package mainimport "fmt"func main(){a, b, c, d := 1, "string", true, 3.14fmt.Println("\n","a =",a,"\n","b =",b,"\n","c =",c,"\n","d =",d)}
