内容简介:var关键字用来定义变量,不论定义什么类型的变量,都可以使用var来定义。定义变量时,如果定义的变量没有初始化,则必须指定变量类型;如果变量定义时初始化,则可以不指定类型,由编译器自行推断变量类型。如定义一个变量名为num的int类型变量方法如下:
var关键字用来定义变量,不论定义什么类型的变量,都可以使用var来定义。
var 变量名 [类型] [=] [初始值]
定义变量时,如果定义的变量没有初始化,则必须指定变量类型;如果变量定义时初始化,则可以不指定类型,由编译器自行推断变量类型。
如定义一个变量名为num的int类型变量方法如下:
var num int var num int = 8 var num = 8 num := 8
在定义变量时,var关键字可以省略,如使用num:=8来定义变量,就省略了var关键字,而是采用在赋值符号左侧加入了冒号(:=)的方式定义变量。使用 := 的方式定义变量,有限制条件,这种定义变量的方式只能在函数内部进行,也就是只能定义局部变量。如果定义全局变量,不能使用 := 来定义,只能使用var来定义。
在定义变量时,需要合理规划,golang是一门追求简洁的语言,每一个定义的变量都必须被使用,否则会造成编译错误:
...num declared and not used
下边来介绍在一行中定义多个变量的方法。如定义3个int类型的变量,分别是num1, num2, num3,并为这3个变量赋值,写法如下:
// 第一种写法 var num1 int = 1 var num2 int = 2 var num3 int = 3 或者 var num1 = 1 var num2 = 2 var num3 = 3 // 第二种写法 var num1,num2,num3 int = 1,2,3 或者 var num1, num2, num3 = 1,2,3 // 第三种写法 var ( num1 int = 1 num2 int = 2 num3 int = 3 ) 或 var ( num1 = 1 num2 = 2 num3 = 3 )
如上述定义变量的方式中,第二种写法在一行中完成,有些情况下会显得比较简洁。
上述的3个变量,都是同一个类型,即int型,那么在一行中,能否同时定义多个不同类型的变量呢? 答案是:可以,但是有前提条件 。在一行中同时定义多个不同类型的变量,需要在定义变量时初始化变量,且不能显示的指定变量类型。如定义变量str和num两个变量,str类型为string,num类型为int。定义方法如下:
package main import ( "fmt" "reflect" ) func main() { str, num := "hello str", 88 fmt.Println("str value is:", str, " type is:", reflect.ValueOf(str).Kind()) fmt.Println("num value is:", num, " type is:", reflect.ValueOf(num).Kind()) }
输出结果是:
str value is: hello str type is: string num value is: 88 type is: int
上边定义变量str和num时,也可以使用var来定义,而不使用:=,如:
var str, num = "hello str", 88
下边来看几个错误的写法:
错误1:var str, num string, int = "hello str", 88 (错误语法格式) 错误2:var str string, num int = "hello str", 88 (错误语法格式) 错误3:var str, num string = "hello str", 88 (两个变量类型不一致) 错误4:var str, num int = "hello str", 88 (两个变量类型不一致)
特殊变量 下划线 (_)
在golang中有个特殊的变量,那就是下划线,将变量赋值给下划线,表示丢弃这个值,写法如下:
var _ = "hello"
那么下划线这个变量能否被引用呢? 答案是:不能 。下边来一个错误的写法:
// 错误写法示例 package main import ( "fmt" ) func main() { var _ = "hello" fmt.Println(_) }
错误信息是:
cannot use _ as value
为什么要使用下划线变量?
在第一章节我们了解到,golang的函数可以返回多个值,有些场景中,我们只需要其中一个返回值,其余返回值用不上,那么我们就可以将用不上的返回值赋值给下划线变量。 如果不赋值给下划线变量,那么就需要定义变量来接收这些值,但是在golang中定义了却又没有使用的变量,无法通过编译,这些无用的返回值给编码造成了不必要的麻烦。
注意事项:
在import导入包时,可以在导入包的前边加上下划线,表示只执行这个包中的init函数。那么导入包时的下划线和变量定义中的下划线是否含义相同? 答案是:不是 。尽管都是用下划线这个符号来表示,都有丢弃值的操作,但是使用场合不同,意义就不相同,不能混为一谈。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 番外篇2-基本规范、注释、static关键字、import关键字
- 说说iOS中的常用的关键字static ,class(仅限Swift关键字)
- Golang 关键字
- 2019 关键字
- golang关键字
- final关键字深入解析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
神一样的产品经理
闫荣 / 电子工业出版社 / 2012-6-1 / 79.00元
这是一本系统阐述移动与互联网产品从无到有、从有到优的产品经理实践案例著作。《神一样的产品经理:基于移动与互联网产品实践》贯穿着“人如产品,产品如人”、“产品的根基和源泉来自现实生活”的写作理念,表达了产品的成功需要神一样的产品经理管理的观点。 《神一样的产品经理:基于移动与互联网产品实践》由浅入深、循序渐进地阐述了产品经理、产品需求、用户体验、项目管理、产品运营和产品团队管理的内容,理论与实......一起来看看 《神一样的产品经理》 这本书的介绍吧!