Go 语言 switch/case 的一个小坑

前几天竟然被 switch/case 坑了一小下,坦白讲,能掉进这个坑,纯粹是基本语法不过关,把 Go 当成 C++ 了。

下面是一个简化后的粟子,通过一个人的名字来判断我认不认识他,最初写下这段代码的期望结果是:如果 nameJohnKenny,把 i_knew_him 置为 true,表示我认识这两个人,别人(默认)不认识。熟悉 C++ 的同学一定知道我为什么这样写。

var i_knew_him bool = false
switch name {
case "John":
case "Kenny":
    i_knew_him = true
}

但我们现在写的是 Go 语言,执行结果不一样了(敲黑板

我的好朋友 John 迎面走了过来,我却假装不认识他,i_knew_him = true 根本没有执行到,因为这条表达式只属于 case "Kenny"……

正确的写法是什么样的呢?

case "John", "Kenny":
    i_knew_him  = true

详见 Go 语言规范

<全文完>

0 Comments

No comments yet.

Leave a Reply