你可曾疑问,为什么要使用变量?变量的本质是什么?。本篇文章将详细的介绍变量
一、 变量是什么?为什么需要变量?
1、编程的本质是对内存中数据的访问和修改。程序所用的数据都会保存在内存中,程序员需要一种机制来访问和修改保存在内存中数据。这种机制就是变量。每个变量都代表了某一小块内存,而且变量都是有名字的,程序对变量赋值,实际上就是把数据装入该变量的内存区域的 ;程序读取的值实际上就是把该变量所代表的内存区取值的过程。
形象理解为:变量相当于一个有名称的容器,该容器用于存储各种类型的数据。
2、变量是程序的基本组成单位
不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位
二、 变量
1、变量基本介绍
变量相当于内存中一个数据存储空间的表示。
你也可以这样理解:把变量名看做是一个房间的门牌号,通过门牌号我们可以找到房间,同样的道理,通过变量名可以访问到变量(值)。
2、变量使用的基本步骤
1) 声明变量(也称定义变量)
2) 变量赋值
3) 变量使用
代码演示:
func main() {
var num int //声明(定义)变量
num = 9 //变量赋值
fmt.Println(num)//变量使用
}
3、变量使用细节和注意事项
1) 变量表示内存中的一个存储区域。该区域有自己的名称(变量名)和类型(数据类型) [如下图]
2) Golang变量使用的三种方式:
(1)第一种:指定变量类型,声明后若不赋值,使用默认值
(2)第二种:根据值自行判定变量类型(类型推导)
(3)第三种:省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。
代码演示:
/*Golang变量使用的三种方式*/
func VariableDemo2() {
//Golang变量使用的三种方式
//(1) 第一种:指定变量类型,声明后若不赋值,使用默认值
var num2 int
fmt.Println("num2=", num2) // 整数类型的默认值都是 go 0
//(2) 第二种:根据值自行判定变量类型(类型推导)
var num3 = 890 //编译器,就会进行类型推导,num3就是int
var num4 = 1.2 //编译器,就会进行类型推导,num4就是float...
fmt.Printf("num3 类型=%T, val= %v\n", num3, num3)
fmt.Printf("num4 类型=%T, val= %v\n", num4, num4)
//(3) 第三种:省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误
num5 := 12 //等价两句话 var num5 int ; num5 = 12
num6 := "tom"
fmt.Printf("num5 类型=%T, val= %v\n", num5, num5)
fmt.Printf("num6 类型=%T, val= %v\n", num6, num6)
}
3) 多变量声明
在编程中,有时我们需要一次性声明多个变量,Golang也提供这样的语法。
//一次性声明多个全局变量[(1) 作用域在整个包 (2) 作用域在本包和其它包 ]
var (
num1 = 10
name = "tom"
sal = 234567.89
)
/*3) 多变量声明*/
func VariableDemo2() {
//多变量声明在编程中,有时我们需要一次性声明多个变量,Golang也提供这样的语法
//使用全局变量
fmt.Printf("num1=%v name=%v sal=%v\n", num1, name, sal)
//声明多个局部变量【一般来说,局部变量的作用域 就在声明该变量的函数体内】
var a, b, c int // a,b, c都是int类型,而是默认是0
var a1, b1, c1 = 10, 1.2, "tom" // 使用类型推导,一次性给多个变量赋值
a2, b2, c2 := 100, 1.21, "jack"
fmt.Println(a, b, c, a1, b1, c1, a2, b2, c2)
a = 890
//var a int
// a = 1.1 //错误 a是int ,就不能再给 1.1小数
}
4) 同区域的数据值可以在同一数据类型范围内不断变化,即同一个变量可以重复赋值
var a int
a = 1
a = 2
5) 变量在同一个作用域(在一个函数或者在代码块)内不能重名
6) 变量三要素:变量=变量名+值+数据类型,这一点需要格外注意。
7) Golang的变量的零值
Golang的变量如果没有赋初值,编译器会使用默认值, 比如 int 默认值 0 string默认值为空串.
三、变量的数据类型
变量的数据类型将在下一篇中详细介绍。