欢迎来到 德阳市某某建筑工程维修网点
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
2.9 Go语言中的Switch
  来源:德阳市某某建筑工程维修网点  更新时间:2024-04-28 06:03:57

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


友情链接炉石传说拉斯塔哈的大乱斗奥秘猎卡组_奥秘猎卡组玩法攻略魔兽世界怀旧服三大本战士毕业装备有哪些2019龙之谷手游互通版多大的宝宝可以用腰凳?2024内置修改器作弊菜单游戏大全英雄联盟大乱斗狗头出装(LOL上单狗头的出装及攻略)强力的装备?斗破苍穹之斗帝之路橙装怎么弄!原神什么时候出干鱼 原神肺棘鱼出没地点英雄联盟手游 战斗之夜、送英雄礼包...海量福利活动助力新手入门,当前版本最全的入门指南来了~幻塔密码锁密码大全2022最新一览幻塔破解版内置修改器(无限钛晶) 2.4.131安卓版怀孕适合做什么小游戏惩击在什么情况下可以对敌方英雄使用?夫子的进阶试炼答案2000精粹最值得换购的皮肤炫彩,最后一个特效加量不加价《英雄联盟》新英雄时间表最新大全三国志战略版:甘宁虎臣骑兵《DNF》战令任务怎么做 阿拉德探险记全部任务攻略LOL6.10版本更新皮肤一览王者荣耀新版野怪什么时候刷新 刷新时间分享《魔兽世界》最全GM命令+装备+物品代码大全(85页)DNF:13券赠送引争议!花钱上的哭了,要求出锻9,打武器or耳环?2024年3月1日未时下午13点14点出生属龙女宝宝适合取什么名字国服3.13版本圣骑士天赋加点 新手玩家适用梦幻妙法慧心怎么做(妙法慧心任务奖励与完成流程)我的世界1.7.2种子代码大全及作用详细解析仙剑奇侠传5:续传 官方中文版dnf100级召唤勋章选什么 100级召唤徽章勋章守护珠推荐无尽战区DOTA2赏金猎人刚铎怎么出装详解魔兽世界80级战士天赋怎么加点(WLK怀旧服战士天赋加点攻略)dnf小号快速提升指南,卡3.8名望解决,外传任务每周任务情怀如何延续?热门端游改编手游玩法对比LOL:继一只鱼韩服再出天才国人打野 赵信78胜率都是PDD给教的?魔兽世界沙塔尔天空卫队声望怎么开启 沙塔尔天空卫队声望怎么刷dnf剑皇剑帝二觉86加点方案 dnf裁决女神弑神者刷图加点《魔兽世界》怀旧服:努力就会有回报?这些装备到手还得靠点运气快手极速版一分钱砍价完成后库存不足导致砍价的优惠券失效,平台不给解决方案与时间怀旧服狂暴战的暴击阈值是多少 根据命中而定dota2中可以出售的饰品怎么得?光遇10月19日复刻先祖在什么地方 10月19日复刻先祖所在地点推荐
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2119

Copyright © 2024 Powered by 德阳市某某建筑工程维修网点   sitemap