Gopher每日刷题 题目解析
【单选题】下面的程序的运行结果是:
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 关键字来实现这一功能:
1var s = "hello"
2switch {
3case s == "hello":
4 fmt.Println("hello")
5 fallthrough
6case s != "world":
7 fmt.Println("world")
8}
结果:
1hello
2world
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。