欢迎来到 商丘市某某通信设备服务中心
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
2.9 Go语言中的Switch
  来源:商丘市某某通信设备服务中心  更新时间:2024-04-27 19:41:13

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


友情链接亡者峡谷今犹在,不见当年双子塔!DNF王者峡谷的背景故事LOL一区铂金以上水平真的跟其他区水平差距很大吗?全球热门靶点新药研发进展:OX40激动剂正在阅读:光遇潜海季第二个任务攻略 潜海季第二个任务怎么完成光遇潜海季第二个任务攻略 潜海季第二个任务怎么完成信息化武器新秀——巡飞弹概览lol进不去游戏怎么解决新开盛大传奇sf炉石传说紫罗兰魔翼鸦怎么样 卡牌效果图鉴测评1月7日抢先服版本更新完成公告猫眼石不一般的灵性与功效!《我的世界》精品区种子代码大全 PE村庄种子汇总美剧王冠口碑爆棚 深挖英国女王到底有多少王冠DNF已删除角色怎么恢复DNF剑魂特色玩法、加点技巧、装备路线,让你所向披靡的攻略你在极地大乱斗见过哪些奇怪却很强的出装?DNF:白金徽章走向全民化,鬼剑士毕业徽章推荐,红眼有3个选择寻仙手游京城8个隐藏任务详细图文坐标位置完成攻略lol6.21高胜率打野小丑天赋符文出装加点攻略《英雄联盟手游》琴女怎么玩 琴瑟仙女辅助技巧教学超级上新丨体寒痛经、气色差终于有救了!贵妃御品“天堂姜膏”来啦《和平精英》:暗夜危机即将下线,玩家发现神秘纸条,预示回归内容!阴阳师悬赏封印详解《摩尔庄园手游》2022年8月25日神奇密码领取兑换英雄联盟截的图在哪找 英雄联盟截图保存在哪里的-快看英雄联盟手游琴瑟仙女娑娜出装天赋攻略dnf100级女散打毕业装备怎么搭配 2022女散打毕业装备搭配推荐摆摊算命吗?家破人亡的那种2022LOL无限火力鳄鱼出什么装 2022LOL无限火力鳄鱼出装攻略英雄联盟截图在哪个文件夹-截图文件夹位置《英雄联盟》ADC 英雄如何上分?角色爆料丨战争女神「芙蕾雅」职业资料详解dnf锻造技巧(dnf锻造技巧7上8会掉吗)8.7版本 老琴女20天直播上王者心得分享《dnf》哈林史诗怎么制作 哈林史诗制作方法《中国音乐公告牌》迪玛希进口rap惊艳众人DNF:锻造加四维?是的,奶系专属!奶爸也要锻造武器啦!dnf手游韩服连接不上服务器怎么办 连接失败问题解决方法浓缩的异界精髓怎么得 dnf浓缩的异界精髓获取攻略英雄联盟手游巡查员资格怎么申请甘罗怎么死的?
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2474

Copyright © 2024 Powered by 商丘市某某通信设备服务中心   sitemap