Go 语言 switch/case 的一个小坑
前几天竟然被 switch/case 坑了一小下,坦白讲,能掉进这个坑,纯粹是基本语法不过关,把 Go 当成 C++ 了。
下面是一个简化后的粟子,通过一个人的名字来判断我认不认识他,最初写下这段代码的期望结果是:如果 name
是 John
或 Kenny
,把 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.