Go Quizzes 101 (4)
题目
package main
func alwaysFalse() bool {
return false
}
func main() {
switch alwaysFalse(); {
case true:
println(true)
case false:
println(false)
}
}
分析
switch-case
代码块的标准形式是:
switch InitSimpleStatement; CompareOperand0 {
case CompareOperandList1:
// do something
case CompareOperandList2:
// do something
...
case CompareOperandListN:
// do something
default:
// do something
}
其中:
InitSimpleStatement
是可以省略的。CompareOperand0
也是可选的,如果被省略,则被认为是bool
类型的true
值。 这一点是解答本题的关键。CompareOperand0
的估值会从上到下从左到右和各个CompareOperandListX
表达式列表中的各个case表达式逐个依次比较,来决定执行哪个分支的代码块。
因此,这个例子中会执行 case true
分支的代码,即打印 true。
Comments