Go (或Golang )是Google 在2007 年开发的一种开源编程语言,出自Robert Griesemer 、Rob Pike 和Ken Thompson 之手。2009 年11 月10 日, Google Open Source Blog 向全球发布了这款语言:公告指出Go 的主要目标是“兼具Python 等动态语句的开发速度和C 或C ++等编译型语言的性能与安全性”。
1. switch
switch语句可以多分支条件执行。自上而下顺序执行每条case语句中的表达式,执行表达式结果相同的case语句,则后续的case语句会被忽略,当case语句都不匹配时,则执行default兜底。
switch 语句可用来替代冗长的if else,switch可以让代码看起来更加的易于阅读,性能也较if else更好。
网上找到了一个流程图,很不错,借鉴一下。
举个例子:
7行:定义了一个需要评估的变量s;
9、11、13行case语句指定了需要与变量s比较的表达式;
如果表达式成立,则执行相应的语句;
如果表达式都不成立,则执行default后的语句。
需要注意的是,case是顺序自上至下执行的。
Default也可以理解为兜底执行。
2. for语句
for是一种循环控制结构,在go语言中,for有3种形式,for反复执行代码块,直到发现条件不再满足循环条件为止。
Go中,循环控制只有for一种,没有foreach、while等。
我们做一个1到10的求和。
6行:定义了变量n初始值为0;
7行:for循环,变量i初始值为1,判断变量i小于等于10,i++也就是i = i +1,也就是说每次变量i自加1次。
8行:n += i 也就是n = n +1。
当变量i小于10时,循环终止,跳出循环。
上面的代码也可以换一种写法
可以看到,虽然代码不是太一样,但是执行结果是完全一样的。
当然还可以用第3种写法
7行:声明变量its,类型为整形数组,其中包含1到10的数字
8行:for语句的迭代变量i用来放数组循环过程中的值,直到循环结束。
这种写法看起来更麻烦了,其实不然,这种写法用的也是更为广泛的一种。For range写法通常不需要直到数组的长度,更适合遍历大多数数据结构。
3. defer语句
Defer是一个非常有用的功能,它通常在执行清理操作时或确保操作完成后再执行defer跟着的函数。
我们还是先举个例子,这个例子可以计算1到1000相加的和。
16行:defer fmt.Println(“end”)在程序最后执行了。
思考一下,如果顺序有多个defer,那么执行顺序是什么呢?
思考3秒钟,考虑下执行结果。
5
4
3
2
1
执行结果如下:
和你想的一样吗?
可以看到,先写的defer是最后执行的,而最后写的defer是优先执行的。