赞
踩
不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,在程序里面无处不在。
概念
变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,同样的道理,通过变量名可以访问到变量(值)。
变量使用的基本步骤
(1)变量表示内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型)
在编程中,有时我们需要一次性声明多个变量,Golang也提供这样的语法
程序运行,在执行到定义变量的时候,会发生什么事情呢?(代码要运行起来,那么所有的代码必须加载到内存当中代码才可以运行)
声明了变量i就会在内存里面开辟一个数据空间,同时生成变量i,i就和数据空间关联起来了,当你只是声明了变量,但是没有赋值的时候有一个默认的值为0。
之后赋值了10,那么就会通过变量i找到数据空间将里面的值改为10。
(2)Golang变量使用的三种方式
第一种∶指定变量类型,声明后若不赋值,使用默认值,int类型默认值为0,其他类型默认值再说
- var i int
- fmt.Println(i) //0
第二种∶根据值自行判定变量类型(类型推导)这个时候编译器就会去类型推导(下面未定义类型,直接赋值,声明变量并且赋值)
- var num = 10.1
- fmt.Printf("%T",num)
-
- float64
第三种∶省略var,注意∶=左侧的变量不应该是已经声明过的,否则会导致编译错误
- var name string
- name = "tom"
- name := "tom"
- fmt.Printf("%T %s",name,name)
-
- string tom
上面就声明变量的时候同时赋值了。
(3)该区域的数据值可以在同一类型范围内不断变化
变量的值是可以变化的,但是有前提,要注意其作用域,其次类型不能发生变化。
(4)变量在同一个作用域内(简单理解在函数或者代码块里面)不能重名,不同的作用域是可以重名字的
(5)变量 = 变量名 + 数据类型 + 值,这一点请大家注意
(6)Golang 的变量如果没有赋初值,编译器会使用默认值,比如 int默认值0,string默认值为空
串,小数也是默认为0的。
声明变量
基本语法∶var 变量名 数据类型
var a int 这就是声明了一个变量,变量名是 a
var num1float32 这也声明了一个变量,表示一个单精度类型的小数,变量名是num1
初始化变量
在声明变量的时候,就给值。var a int= 45 这就是初始化变量a
使用细节∶ 如果声明时就直接赋值,可省略数据类型 var b = 400
给变量赋值
比如你先声明了变量∶var num int
然后,再给值 num=780,这就是给变量赋值
与其他主要编程语⾔如java c++ 的差异
交换两个变量的值最常见的就是引入一个中间变量,go语言可以在一个语句里面对多个变量赋值
- var a,b int = 1,2
-
- var a,b = 1,"2"
-
- a,b := 2,4
- func TestExchange(t *testing.T){
- a := 1
- b := 2
-
- a,b = b,a
- t.Log(a,b)
-
- }
-
- === RUN TestExchange
- my_test.go:149: 2 1
- --- PASS: TestExchange (0.00s)
- PASS
与其他主要编程语⾔的差异
- d := 1
- dPtr := &d
- fmt.Printf("%p,%T\n",dPtr,dPtr)
-
- 0xc000108010,*int
不支持指针的运算,在很多语言当中通过指针自增来访问连续的存储空间。但是在go语言里面是不支持指针运算的。
dPtr = dPtr + 1
与其他主要编程语⾔的差异
- type mytype int
-
- var b int
- fmt.Printf("%v,%v\n",reflect.TypeOf(a),reflect.TypeOf(b))
- b = int(a)
-
- main.mytype,int
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。