golang中一种不常见的switch语句写法示例详解 |
||||
最近翻开源代码的时候看到了一种很有意思的switch用法,分享一下。 注意这里讨论的不是 直接看代码:
?
你也可以在这找到它:代码链接 简单解释下这段代码在做什么:调用systemctl命令检查指定的服务的运行状态,具体做法是过滤systemctl的输出然后根据得到的字符串的前缀判断当前的运行状态。 有意思的在于这个switch,首先它后面没有任何表达式;其次在每个case后面都是个函数调用表达式,返回值都是bool类型的。 虽然看起来很怪异,但这段代码肯定没有语法问题,可以编译通过;也没有语义或者逻辑问题,因为人家用的好好的,这个项目接近4000个星星不是大家乱点的。 这里就不卖关子了,直接公布答案: 如果 那么上面那一串代码就好理解了: 首先是 它等价于下面这段:
?
|