欢迎来到 贵州某某食品机械教育中心
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
2.9 Go语言中的Switch
  来源:贵州某某食品机械教育中心  更新时间:2024-05-09 06:13:35

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


友情链接曹操使用大时可以立刻解除受到的控制效果,在持续时间内获得增益,增益不包括 夫子的进阶试炼答案【iPhone XI(全网通)QQ炫舞下载】苹果iPhone XI 全网通QQ炫舞7.2.2免费下载钟声绵绵梦醒时《阴阳师》清姬全新皮肤上线!魔兽世界美酒节奖币怎么获得 美酒节奖币获取方法阴阳师现世召唤阵图片永劫无间火罗国仙人掌在哪里 永劫无间火罗国仙人掌在哪里介绍魔之符咒全攻略,魔兽争霸3冰封王座魔之符咒6.01名人堂英雄怎么选魔兽世界字体修改图文教程(魔兽字体修改有哪些具体步骤)冥域之征砍价砍到到小数点后6位,网红现场直播曝光拼多多!魔兽世界60级怀旧服兽人狂暴战团本地位如何?好攒装备不?拼音打字练习下载魔兽世界wlk怀旧服:猫德上限跟下限的话,猫德可以玩吗?魔兽世界时光徽章价格走势(WOW正式服时光徽章行情)破解无限版手游下载平台阴阳师3月30日更新轩辕传奇手游战士攻略大全 轩辕传奇战士平民玩法 已推荐妄想山海游侠小屋在哪 妄想山海游侠小屋位置魔兽世界怀旧服:TBC燃烧的远征70级职业天赋介绍-猎人英雄联盟赵信天赋符文怎么搭 赵信天赋符文推荐选择原神稻妻神樱大祓任务流程全攻略阴阳师体验服年兽副本式神强度 难度分析和掉落奖励一览西施、王昭君皮肤曝光,6款限定返场确认,马可、鲁班笑了高能预警,细数英国女王那些年带过的皇冠!都是惊世之作!传奇SF手游开服《魔兽世界》图样白色强盗面罩怎么获得 wow白色强盗面罩掉落怪物分布图(图文)未来发明作文魔兽世界:全新幻化风席卷全球?8.0资料片28大职业天赋神器混搭魔兽世界怀旧服史诗武器大全 全史诗武器效果介绍 其拉祭祀匕首dnf极限祭坛有什么奖励(地下城极限的祭坛潘怎么过)韩服DNF策划开GM账号中饱私囊,国内外游戏官托屡见不鲜魔兽世界猎人天赋 魔兽怀旧服猎人指南PVE向 _环球观焦点暴走英雄坛熊猫两件神器,福地熊猫人神器能带走吗越战一等功臣离婚风波, 牵扯十二个家庭, 法庭妻子泪如雨下《原神》鱼饵合成在哪里介绍阴阳师4月17日体验服更新内容汇总 新式神不知火上线离岛之歌鬼灵花魁活动开启被手游压垮?索尼宣布正式停产掌机PSV阴阳师鬼王什么时候打,2023阴阳师超鬼王什么时候上线魔兽世界怀旧服60德鲁伊天赋
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2494

Copyright © 2024 Powered by 贵州某某食品机械教育中心   sitemap