七叶笔记 » golang编程 » Go语言编程从入门到精通,流程控制之switch、for、defer

Go语言编程从入门到精通,流程控制之switch、for、defer

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是优先执行的。

相关文章