分享
golang switch 之坑
ochipe · · 3284 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
昨天在星球星主分享了一个题目,是关于一行结束不加分号直接换行,编译期会直接加分号的题目,随后又分享了一道题,如下
import "fmt"
func False() bool {
return false
}
func main() {
switch False()
{
case true:
fmt.Println("true")
case false:
fmt.Println("false")
}
}
其实乍一看,是false,但是不妨你写成如下看看
func main() {
switch False(){
case true:
fmt.Println("true")
case false:
fmt.Println("false")
}
}
完全不同的两种结果
对于第一种结果是因为编译期对switch哪一行自动加了分号,这时候switch没有了条件,case会跟true做比较,满足条件的会输出,因此就看到了为什么输出是true
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3284 次点击
上一篇:MAY-Lesson 1
下一篇:年中总结与目标OKR
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
昨天在星球星主分享了一个题目,是关于一行结束不加分号直接换行,编译期会直接加分号的题目,随后又分享了一道题,如下
import "fmt"
func False() bool {
return false
}
func main() {
switch False()
{
case true:
fmt.Println("true")
case false:
fmt.Println("false")
}
}
其实乍一看,是false,但是不妨你写成如下看看
func main() {
switch False(){
case true:
fmt.Println("true")
case false:
fmt.Println("false")
}
}
完全不同的两种结果
对于第一种结果是因为编译期对switch哪一行自动加了分号,这时候switch没有了条件,case会跟true做比较,满足条件的会输出,因此就看到了为什么输出是true