• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

goswitch语法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在go中,switch可以支持传入各种类型进行选择,从实现上来说相当于从第1个case到最后一个case遍历进行比较,执行最先满足条件的case
并且go语言还规定必须要显式写明fallthrough语句才会接着执行下一个case,不用再写break了。这样其实更合理一些,因为绝大部分情况都是这个语义的,何必再在每个case里面写上break呢。

func main() {
	var weakDay string
	fmt.Scan(&weakDay)
	switch weakDay {
	case "Mon.":
		fmt.Println(1)
	case "Tues.":
		fmt.Println(2)
	case "Wed.":
		fmt.Println(3)
	case "Thurs.":
		fmt.Println(4)
	case "Fri.":
		fmt.Println(5)
	case "Sat.":
		fmt.Println(6)
	case "Sun.":
		fmt.Println(7)
	default:
		panic("wrong day")
	}
}

支持一个case里面多种情况。

func main() {
	var weakDay string
	fmt.Scan(&weakDay)
	switch weakDay {
	case "Mon.", "Tues.", "Wed.", "Thurs.", "Fri.":
		fmt.Println("work day")
	case "Sat.", "Sun.":
		fmt.Println("weakend")
	default:
		panic("wrong day")
	}
}

可以不传入参数,替代繁琐的if else写法。这里每个case挨个判断,进入最先满足条件的case执行。

func main() {
	var score int
	fmt.Scan(&score)
	switch {
	case score < 60:
		fmt.Println("不及格")
	case score >= 60 && score < 80:
		fmt.Println("不错")
	case score >= 80:
		fmt.Println("优秀")
	default:
		panic("wrong number")
	}
}

type switch

type switch是go语言中一种特殊的switch语法,它比较的是类型而不是具体的值。
和普通的类型断言一样,要求进行断言的变量是接口类型的。并且在type switch中不允许使用fallthrough语句。

	switch x.(type) {
	case nil:
		doSomeThing()
	case Type1:
		doSomeThing()
	case Type2:
		doSomeThing()
	default:
		doSomeThing()
	}

为了方便进行类型转换,type switch还可以设定一个值来提前保存转换之后得到的值。

	switch value := x.(type) {
	case nil:
		doSomeThing()
	case Type1:
		doSomeThing(value)
	case Type2:
		doSomeThing(value)
	default:
		doSomeThing(value)
	}

参考资料


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言文件操作发布时间:2022-07-10
下一篇:
go语言基础之格式化输出发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap