一起来学Go——(go的变量)
变量
变量是几乎所有编程语言中最基本的组成元素,从根本上说,变量相当于是一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。go语言中的变量使用方式与C语言接近,但具备更大的灵活性。
变量的声明
go语言引入了关键字ver,而类型信息放在变量名之后。示例如下:
变量声明语句不需要使用分号作为结束语,与C语言相比,go语言摒弃了语句必须以分号作为语句结束标记的习惯。
var关键字的另一种用法是可以将若干个需要声明的变量放置在一起,免得程序员需要重复写var关键字,如下图:
变量初始化
对于声明变量时需要进行初始化的场景,var关键字可以保留,但不再是必要的元素,如下所示:
以上三种用法的效果是一样的,与第一种用法相比,第三种用法需要输入的字符数大大减少,这里go语言也引入了另一个c和c++中没有的符号(冒号和等号的组合:=),用于明确表达同时进行变量声明和初始化的工作。
指定类型已不再是必须得,go编译器可以从初始化表达式的右值推导出该变量应该声明为那种类型,这让go语言看起来有点像 动态类型语言,尽管go语言实际上是不折不扣的强类型语言(静态类型语言)
当然,出现 :=左侧的变量不应该是已经被声明过的,否则会导致编译错误,比如下面这个:
变量赋值
在go语法中,变量初始化和变量赋值是两个不同的概念,下面为声明一个变量之后的赋值过程:
go语言的变量赋值与多数语言一直,但go语言中 提供了c/c++程序员期盼多年的多重赋值功能,比如下面这个交换 i 和 j 变量的语句:
多重赋值的特性在go语言库的实现中也被使用得相当充分,在介绍函数的多重返回值时,将对其进行更加深入的介绍 ,总而言之 ,多重赋值功能让go语言与C/C++语言相比非常明显地减少代码行数 。
匿名变量
我们在使用传统的强类型语言编程时,经常会出现这种情况,即在调用函数 时为了获取一个值,却应为该函数返回多个值而不得不定义一堆没用的变量,在go中这种情况可以通过结合使用多重返回和匿名变量来避免这种丑陋的写法,让代码看起来更加优雅。
假设:GetNmae()函数的定义如下,它返回三个值,分别为 firstName、lastName和nickName:
若只想获得nickName,则函数调用语句可以用如下方式编写:
这种用法可以让代码非常清晰,基本上屏蔽掉了可能混淆大家实现的内容,从而大幅度降低沟通的复杂度和代码为何的难度。
常量
在go语言中常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数型)、布尔类型、字符串类型等。
字面常量
所谓字面常亮(literal),是指程序中硬编码的常量,如:
只要这个常量在响应类型的值域范围内,就可以作为该类型的常量。
常量的定义
通过const关键字,你可以给字面常亮指定一个很友好的名字:
go的常量定义可以限定类型,但不是必须的,如果定义常量时没有指定类型,那么它与字面常量一样,是无类型常量。
预定义常量
go的语言预定义了这些常量: true , false和iota。
iota比较特殊,可以认为是一个可被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其 所代表的数字会自动增1。
从以下列子当中可以基本理解iota的用法:
如果两个const的赋值语句的表达式是一样的,那么可以省略后一个赋值表达式,因此,上面的前两个const语句可简写为:
小结: 本章只是学习go的基本的变量,变量的定义,常量等。
定义变量关键字: var
定义常量关键字 : const
文章来自博客园
更多优质内容推荐:
2017优就业就业促进计划:
http://www.ujiuye.com/zt/jycj/?wt.bd=lsh11tt
学IT,用周末给自己加薪!
http://www.ujiuye.com/zt/zmb/?wt.bd=lsh11tt
IT职业教育:http://xue.ujiuye.com/
※微服务简介——微服务从设计到部署
※分布系统之中心化复制集
※Consumed parameters耗用参数
※掌握以下四个技巧,办公效率提高十倍
TAG:IT优就业 |
※如何拿下Gooligan(一):對Gooligan起源和工作原理的初步分析
※最「無聊」的一次Google I/O
※Google新聞兩則:iOS上的Google體驗更好了
※Google Guice 媲美Spring的輕量級框架
※Github 上最火的 Google 圖像下載工具使用說明:google-images-download
※AppStore用Google Play一半下載量拿到雙倍收入
※永別了,Google+
※Google-ch:一場Google搜索「重返中國」的烏龍
※魅族、魅藍再次合併/Google News 上架 App Store
※數據顯示,App Store的收入幾乎是Google Play的兩倍
※如何拿下Gooligan(三):貨幣化策略和清理Gooligan
※App Store的收入幾乎是Google Play的兩倍
※AutoKeras:Google AutoML的剋星
※AT&T和Google:容器的興起
※Google Clips已在Google Store中提供 3月才發貨
※Google Clips已在Google Store中提供 3月份發貨
※Google、Youtube你可以上了!
※Google不會使用Pogo-Sticking作為一個排名影響因素
※Google Research與Google.ai大統一,合併稱為「Google AI」
※Guess.js:Google的數據驅動改進前端體驗的工具庫