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更好。

网上找到了一个流程图,很不错,借鉴一下。

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

举个例子:

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

7行:定义了一个需要评估的变量s;

9、11、13行case语句指定了需要与变量s比较的表达式;

如果表达式成立,则执行相应的语句;

如果表达式都不成立,则执行default后的语句。

需要注意的是,case是顺序自上至下执行的。

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

Default也可以理解为兜底执行。

2. for语句

for是一种循环控制结构,在go语言中,for有3种形式,for反复执行代码块,直到发现条件不再满足循环条件为止。

Go中,循环控制只有for一种,没有foreach、while等。

我们做一个1到10的求和。

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

6行:定义了变量n初始值为0;

7行:for循环,变量i初始值为1,判断变量i小于等于10,i++也就是i = i +1,也就是说每次变量i自加1次。

8行:n += i 也就是n = n +1。

当变量i小于10时,循环终止,跳出循环。

上面的代码也可以换一种写法

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

可以看到,虽然代码不是太一样,但是执行结果是完全一样的。

当然还可以用第3种写法

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

7行:声明变量its,类型为整形数组,其中包含1到10的数字

8行:for语句的迭代变量i用来放数组循环过程中的值,直到循环结束。

这种写法看起来更麻烦了,其实不然,这种写法用的也是更为广泛的一种。For range写法通常不需要直到数组的长度,更适合遍历大多数数据结构。

3. defer语句

Defer是一个非常有用的功能,它通常在执行清理操作时或确保操作完成后再执行defer跟着的函数。

我们还是先举个例子,这个例子可以计算1到1000相加的和。

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

16行:defer fmt.Println("end")在程序最后执行了。

思考一下,如果顺序有多个defer,那么执行顺序是什么呢?

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

思考3秒钟,考虑下执行结果。

5

4

3

2

1

执行结果如下:

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

和你想的一样吗?

可以看到,先写的defer是最后执行的,而最后写的defer是优先执行的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值