欢迎来到 潍坊市某某橡胶服务中心
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
2.9 Go语言中的Switch
  来源:潍坊市某某橡胶服务中心  更新时间:2024-05-08 13:13:26

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


友情链接2终极 3神话 1臻彩 28限定 21传说 59史诗 205皮肤 8炫彩 163英雄普通玩家必看升级路线攻略 关键声望全开启摩尔庄园官服无尽之剑安卓直装版魔兽世界7.2好卖的皮甲幻化攻略分享2023lol暗夜猎手怎么出装-2023暗夜猎手出装推荐魔兽争霸3冰封王座1.27a补丁 时隔五年推出新补丁火影战记博人传全人物解锁 v1.16魔兽世界9.0评级2100附魔幻象(魔兽世界9.0附魔幻象大全)DNF无尽的祭坛怎么打(100版本无尽的祭坛有什么奖励)“暴怒骑士 克烈” 全新英雄上线!《英雄联盟手游》上分英雄阿狸玩法攻略 lol手游上分英雄推荐《洛克王国》潮流前线活动攻略502 Bad Gateway王者荣耀体验服资格申请官网网址2022:体验服资格申请网址及抢号入口[多图]wow幻觉药水,魔兽变身药水变成牛头人层流空调的原理?层流空调是什么?dnf卡恩为什么不杀赫尔德 巴卡尔死后还有龙族吗《LOL》云顶之弈阿卡丽装备选择dnf卡恩为什么不杀赫尔德 巴卡尔死后还有龙族吗雪人打野高胜率符文英雄联盟lol2020S10.4 counter雪人的英雄传奇类关键词银色战马怎么获得(银色北伐军声望军需官在哪里图)可爱就是正义——DNF十大萌宠,你拥有几个?写小说怎么选择第几人称?王者荣耀S19黄忠出装铭文攻略,黄忠打法技巧分享(3)为什么英雄联盟现在没有新手礼包了?DNF剑宗短剑流装备属性和搭配技巧详细介绍梦幻西游怎么合宝宝快(梦幻手游合宠篇介绍)wowt05任务流程(魔兽世界怀旧服T05任务流程攻略)英雄联盟乌迪尔出什么装备英雄联盟新英雄隐藏任务怎么获得 英雄联盟新英雄隐藏任务怎么做地下城与勇士生物(地下城与勇士怪物图鉴)LOL中考开考了,当初要有这专业,我肯定拿满分!英雄联盟s10门票什么时候发售?英雄联盟s10门票在哪买?魔兽世界怀旧服:RMT的问题,不在于金币分配,而在于挤压玩家王者荣耀2022年黄忠铭文出装推荐DNF未精炼的念气结晶有什么用 念气结晶使用方法香港、澳门、台湾都有哪些知名互联网公司?记忆的本质
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2234

Copyright © 2024 Powered by 潍坊市某某橡胶服务中心   sitemap