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