前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gopher每日刷题 题目解析

Gopher每日刷题 题目解析

作者头像
李海彬
发布2019-06-10 15:15:15
1K1
发布2019-06-10 15:15:15
举报
文章被收录于专栏:Golang语言社区

Gopher每日刷题 题目解析

【单选题】下面的程序的运行结果是:

代码语言:javascript
复制
 1package main
 2
 3func main() {
 4    if true {
 5        defer fmt.Printf("1")
 6    } else {
 7        defer fmt.Printf("2")
 8    }
 9    fmt.Printf("3")
10}

选项:

A. 321 B. 32 C. 31 D. 13

正确答案是:C

考察的知识点:

Go语言的defer(延迟执行)语句,是在函数结束前执行,而如果在函数中有多个defer语句时,则调用的顺序是先进后出的顺序, 类似入栈出栈。


【多选题】关于switch语句,下面说法正确的有:

A . 条件表达式必须为常量或者整数. B. 单个case中,可以出现多个结果选项. C. 需要用break来明确退出一个case D. 只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case

正确答案是:B、D

考察的知识点:

Go 语言改进了 switch 的语法设计,避免人为造成失误。Go 语言的 switch 中的每一个 case 与 case 间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行。

在 Go 语言中 case 是一个独立的代码块,执行完毕后不会像C语言那样紧接着下一个 case 执行。但是为了兼容一些移植代码,依然加入了 fallthrough 关键字来实现这一功能:

代码语言:javascript
复制
1var s = "hello"
2switch {
3case s == "hello":
4    fmt.Println("hello")
5    fallthrough
6case s != "world":
7    fmt.Println("world")
8}

结果:

代码语言:javascript
复制
1hello
2world

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档