Go语言中文网提示您:以下内容是错误的!
跟一般语言的Switch有点不一样,Golang在使用两个case的时候,是第一个是不生效的。
如下的代码
switch (type) { case 1: case 2: return "a"; case 3: return "b" default: return "c" }
但是在Go中,输入1竟然是返回c,被坑过几次。
如果想在Go中达到类似Java的效果,只能这么写:
switch type { case 1: return "a" case 2: return "a"; case 3: return "b" default: return "c" }
一条条写明显太费劲了,所以还可以这么写:
switch type { case 1, 2: return "a"; case 3: return "b" default: return "c" }小细节却不能不注意,因为如果switch分支走错,逻辑基本就错了。
有疑问加站长微信联系(非本文作者)

这篇文章完全是错误的!这么明显的bug, go怎么可能不解决? 作了实验,见下述代码: // FirstGo project main.go package main
import ( "fmt" )
func main() { var key int = 0 fmt.Scanf("%d", &key) switch key { case 1: //fmt.Println("a") case 2: fmt.Println("b") case 3: fmt.Println("c") default: fmt.Println("d") } } 输入1,不会有显示, 输入2,显示b.
结论:switch语句完全正确,无须理会上述博文.
go语言里面switch的每个case分支的最后默认是带break的,如果想要和c或者java那样不带break自动接着执行下一个case封装,需要显示地在case分支结束的时候加fallthrough。 你的case 1:里面什么都没有,当然不会有输出。
这篇文档是错误的,对读者不负责任,赶紧删了吧 @sydbfhwj
已在文章开头加了提示
cool