在真正的编码过程中要使用一个变量,必须先声明然后才能使用,GO语言也不例外
1、声明变量
var postCode int //声明一个整型变量postCode var phoneNum int //声明一个整型变量phoneNum var name string //声明一个字符串变量name var address string //声明一个字符串变量address |
从上面可以看到尽管我们只是声明了一个变量,但GO帮我们给这些变量自动初始化了一个缺省值,其中整型的缺省值为0,字符串的缺省值为空串
【备注】:
有过其它语言的开发经验的读者都知道,像上面变量声明写成四行,不简洁,我们是否可以这写
var postCode, phoneNum int
var name, address string
当然可以,你可要知道GO语言是适合比较懒惰的程序员的程序哟 :)
2、初始化
若GO自动初始化的缺省值不是我们想要的,我们完全可以在声明的同时对变量进行初始化
var postCode int = 252039 var phoneNum int = 13126718111 var name string = "qingke" var address string = "Shenzhen City, Guangdong Province" |
再打印一下各个值分别是多少:
OK,和预期的一样。我们能否也简化一下呢?答案是:不光能简化还有很多玄机呢
玄机1:去掉变量后面的类型
var postCode = 252039 var phoneNum = 13126718111 var name = "qingke" var address = "Shenzhen City, Guangdong Province" |
GO很贴心,告诉我们这样也可以使用
玄机2:同类型的写在一行并分别赋值
var postCode, phoneNum = 252039, 13126718111 var name, address = "qingke", "Shenzhen City, Guangdong Province" |
ctrl+b,回车运行一下,看是否有报错
玄机3:直接去除变量标识
postCode, phoneNum := 252039, 13126718111 name, address := "qingke", "Shenzhen City, Guangdong Province" |
ctrl+b,回车运行一下,看是否有报错
读者可能已关注到,把var删除同时=变为:=
3、变量赋值
在GO语法中,变量初始化和变量赋值是两个不同的概念,下面就为声明一个变量之后的赋值过程:
var name string
name = "qingke"
举例:
假如变量a和变量b都是整型,其中a的值为10,b的值为12,写程序交换a和b的值
var a, b int a, b = 10, 12 // 变量赋值 fmt.Println("a = ", a, " b = ", b) a, b = b, a // a和b的值互换 fmt.Println("a = ", a, " b = ", b) |
首次接触GO的读者可能发现,数字交换时竟然没有引入中间变量!是的,GO就是这么任性
4、思考题
思考1:
var a int // 定义变量a a := 23 // 定义并初始化变量a |
在同一个方法体中写这段代码会怎么样呢?换句话讲,使用:=是否意味着变量就没有定义呢?
从运行结果来看,使用:=变量的定义和初始化同时进行,所以提示没有新的变量出现,这里的a命名冲突
思考2:
var a int32 = 32 // 定义变量a同时初始化 b := 32 // 定义变量b同时初始化 fmt.Println(a == b) // 思考打印是true还是false? |
运行结果告诉我们int32和int不能直接比较,虽然a和b都是整型,但a是int32而b则被GO语言缺省设置为int,GO认为int32和int是两种不同类型,这里也可以看出GO是面向类型的
5、作业
整型的缺省值为0,字符串的缺省值为空串,哪么其它类型的缺省值分别是多少?
本文出自 “青客” 博客,请务必保留此出处http://qingkechina.blog.51cto.com/5552198/1615103
原文:http://qingkechina.blog.51cto.com/5552198/1615103