在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://qingkechina.blog.51cto.com/5552198/1615103
变量也是语言的基本元素,与GO语言的常量类似,常量使用const关键字修饰,而变量使用var关键字修饰,变量声明的形式为var variableName variableType 一、变量声明 var age int var phone int var name string var address string var salary float64 var consume float64 var array [10]int var frieds [20]string 每个变量声明都使用一个var,上面的例子中能否能减少var的个数吗?前面说过GO是最懂程序员的,所以当然可以简写为:
var ( age int phone int name string address string salary float64 consume float64 array [10]int frieds [20]string ) 上面尽管只用了一个var来声明,但变量的行数并没有减少,细心的读者可能发现有两个int、两个string和两个float64,能否合并呢?答案是可以: var ( age, phone int name, address string salary, consume float64 array [10]int frieds [20]string ) 当类型相同时就可以按var variable1,variable2,variable3,variable4 variableType这种形式声明了 二、变量声明时的缺省值 1、变量缺省值 运行上面的程序可以发现int变量缺省赋值为0,string变量缺省赋值为空串(所以打印出来看不见),float64变量缺省赋值为0,int数组中的每个元素缺省赋值为0,string数组中的每个元素缺省赋值为空串 在该例中尽管没有定义复数类型,但不难推断复数变量缺省赋值为0+0i 2、变量声明的实质 变量声明实质上是申请一块数据存储空间并对其进行命名,这样程序可以通过变量名来使用这块存储空间;GO编译器在变量声明时顺便赋一个缺省值 三、变量初始化 正如上例所示,变量声明时编译器会缺省赋一个值,但这个值可能并不是我们想要的,所以我们可以在声明的同时对变量进行初始化,其形式为var variableName variableType = value
var age int = 22 var phone int = 13581887557 var name string = "纠正哥" var address string = "山东" var salary float64 = 3030.30 var consume float64 = 1552.8 var array [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} var frieds [3]string = [3]string{"山东", "李大朋", "13581887557"}
var ( age int = 22 phone int = 13581887557 name string = "纠正哥" address string = "山东" salary float64 = 3030.30 consume float64 = 1552.8 array [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} frieds [3]string = [3]string{"山东", "李大朋", "13581887557"} ) 还可以减少行数: var ( age, phone int = 22, 13581887557 name, address string = "纠正哥", "山东" salary, consume float64 = 3030.30, 1552.8 array [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} frieds [3]string = [3]string{"山东", "李大朋", "13581887557"} ) 还可以去掉变量类型: var ( age, phone = 22, 13581887557 name, address = "纠正哥", "山东" salary, consume = 3030.30, 1552.8 array = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} frieds = [3]string{"山东", "李大朋", "13581887557"} ) 哪有没有更狠的呢?请读者上眼:
age, phone := 22, 13581887557 name, address := "纠正哥", "山东" salary, consume := 3030.30, 1552.8 array := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} frieds := [3]string{"山东", "李大朋", "13581887557"} 运行一下,小伙伴们都惊呆了,这样竟然也行,是的,GO语言就是这么任性 四、变量赋值 下面就是声明一个变量之后的赋值过程: var name string name = "qingke" 举例: 假如变量a和变量b都是整型,其中a的值为10,b的值为12,写程序交换a和b的值
首次接触GO的读者可能发现,数字交换时竟然没有引入中间变量!是的,GO就是这么任性 五、变量声明和初始化符(:=) 【例1】:先看一下小程序 var value1 int32 = 22 value2 := 22 fmt.Println(value1 == value2) 这里先初始化变量value1,它的类型为int32,然后再使用:=符对变量value2声明并初始化,最后判断value1和value2是否相等? 运行结果出乎意料,这里抛出一个错误:说value2的类型与value1的类型不匹配,也就是说使用:=对变量value2进行初始化时,GO编译器会根据变量值22自动推导出一个int类型给value2;在GO语言中int、int32、int64被认为是不同的类型。 【例2】:再看一个小程序 var a int a := 23 程序编译时会不会报错呢? 从运行结果来看,使用:=变量的定义和初始化同时进行,第二个变量a与第一个变量a名称冲突了。 本文出自 “青客” 博客,请务必保留此出处http://qingkechina.blog.51cto.com/5552198/1615103 |
请发表评论