欢迎来到 宁波市某某化工涂料销售部
全国咨询热线:020-123456789
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
2.9 Go语言中的Switch
  来源:宁波市某某化工涂料销售部  更新时间:2024-04-28 00:41:43

2.9 Go语言中的Switch

基本语法

在讲述if-else时已经提到 ,如果有多个判断条件 ,Go语言中提供了Switch-Case的方式 。如果switch后面不带条件相当于switch true

// Convert hexadecimal character to an int valuen switch { n case '0' <= c && c <= '9':n return c - '0'n case 'a' <= c && c <= 'f':n return c - 'a' + 10n case 'A' <= c && c <= 'F':n return c - 'A' + 10n }n return 0

fallthrough使用方法

默认情况下 ,case满足执行后会进行break,后面case即使满足条件也不再循环,如果想继续执行,则需要添加fallthrough,

package mainnnimport "fmt"nnfunc main() { n i := 3n switch i { n case i > 0:n fmt.Println("condition 1 triggered")n fallthroughn case i > 2:n fmt.Println("condition 2 triggered")n fallthroughn default:n fmt.Println("Default triggered")n }n}n

此时所有的case都会被执行

condition 1 triggeredncondition 2 triggerednDefault triggered

多条件匹配

如果同一个条件满足,也可以这样罗列到同一条件,相当于或条件

switch i { n case 0, 1:n f()n default:n g()n}

判断接口(interface)类型

空接口

后面我们会讲到接口,通过switch可以对type进行判断,获取接口的真实类型。

package mainn nimport "fmt"n nfunc main() { n var value interface{ }n switch q:= value.(type) { n case bool:n fmt.Println("value is of boolean type")n case float64:n fmt.Println("value is of float64 type")n case int:n fmt.Println("value is of int type")n default:n fmt.Printf("value is of type: %T", q)n }n}n

在上面的例子中 ,我们定义了一个空接口

var value interface{ }

同时使用switch来判断类型

switch q:= value.(type) {

由于空接口没有内容,所以类型为nil ,触发了default

value is of type: <nil>

获取实际类型

我们对上面的例子进行改造,同时让空接口拥有实际的值,再来看看执行的效果

package mainnnimport "fmt"nnfunc valueType(i interface{ }) { n switch q:= i.(type) { n case bool:n fmt.Println("value is of boolean type")n case float64:n fmt.Println("value is of float64 type")n case int:n fmt.Println("value is of int type")n default:n fmt.Printf("value is of type: %Tn", q)nn }n}nnfunc main() { n person := make(map[string]interface{ }, 0)nn person["name"] = "Alice"n person["age"] = 21n person["height"] = 167.64nn fmt.Printf("%+vn", person)nn for _, value := range person { n valueType(value)n }n}

这里有几个还没有讲到的知识点:

  • • 函数的定义方法
  • • 定义了一个map,但是值的类型为空接口 ,意思就是可以是任何类型的值 ,这在接口章节还会详细讲解,所以大家看到这里不要纠结,继续往下看
  • • 赋值时 ,特意给value不同的类型, string/int/float类型

最后通过循环将变量传给valueType函数,看看程序输出什么结果

map[age:21 height:167.64 name:Alice]nvalue is of type: stringnvalue is of int typenvalue is of float64 type


友情链接甲骨文公司宣布支持用户在AWS上使用MySQL HeatWave新物种进化需要多长时间?申通创始人25岁因车祸离世,14年后妻子改嫁,套现146亿隐姓埋名空中拧阀门,中国小伙研发的龙形机器人进展到了第二代探店丨30万买混动SUV,比亚迪唐和摩卡怎么选?如何在内网搭建SFTP服务器,并发布到公网可访问万马股份:公司与小桔充电、曹操专车等均有合作一加Ace Pro游戏发热测试:“性能手机新标杆”是否名副其实?iPhone14Pro是如何好到可以拿下昂贵的微单相机星链友店更名“照现生态”,通证化电商平台是新机遇还是割韭菜?仅1999元,骁龙888Plus+曲面屏+68W闪充云南联通去年收入规模排三大运营商省公司百强榜第81 有不小的进步配置够强,兼顾办公娱乐,vivo首款平板vivo Pad上手体验分享中国科学家“立大功”,6G技术打破世界纪录,比5G快了20倍雷军用9年,刘强东42岁,创办出世界500强,江苏姐弟更年轻有为?6个硬核实用的国产App,个个都是精品今年北半球出现罕见高温,为何科学家说,这是未来最凉爽的夏天?用车成本比同级燃油车便宜十倍,这款电动小车每公里花不足6分钱本想大赚一笔,却被反向收割,iPhone 14变“屠牛刺客”?腾讯35岁员工地铁站猥亵女子被拘14日,地铁站:遇同类情况可联系警务室华为Mate50Pro值得入手的4个理由,国产高端手机,还是得看华为一加Ace Pro 有多豪横 红衣K50至尊版都要避让三分阿里巴巴丰收节原产地观察:160个重点帮扶县农产品线上销售增长19.3%iPhone 13 Pro有必要升级iPhone 14 Pro?我来告诉你安卓学不来 苹果的高级感到底体现在哪里我国9位入选全球顶尖的100位材料科学家,7人出自中科大羊了个羊否认抄袭:游戏使用的是最基础玩法,用户自有判断发布4个月下跌1955元,骁龙8+4K直屏,满身黑科技为什么没人买?华为拿下一半份额!北方人更爱折叠屏,小米占比快速回升社区团购:度过青春期宇宙大厂腾讯,为什么被称为“南山必胜客”?中国-东盟科技创新提升计划正式启动最前线|猿辅导跨界做咖啡,第一家店开在北京王府井提前激活iPhone14每台罚款20万iPhone14开售粉丝排长队,黄牛蹲点高价回收,小心别被骗了9月30日起施行!弹窗广告不能想弹就弹2022年最值得买的3款拍照手机,“影像”实力强,表现不输小单反8月电动车销量榜:30万的特斯拉和3万块的五菱杀疯了9月30日起施行!弹窗广告不能想弹就弹Plato Labs推出的SeedX,公测15天570万美金净利润
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2858

Copyright © 2024 Powered by 宁波市某某化工涂料销售部   sitemap