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

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

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

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


友情链接手弩跑跑卡丁车手游金币怎么获取 金币使用推荐魔兽争霸3冰封王座傻瓜补丁 1.27B简体中文版(不含地图)在《王者荣耀》里,队友有哪些让你意想不到的操作?如何评价EA《逃出生天(A Way Out)》这款游戏?赛尔号米白色元神珠怎么融合?恶魔城X历代记开启月下的方法魔兽世界十大逆天装备有哪些?英雄分析——蒸汽机器人英雄联盟手游:众星之子索拉卡辅助出装及符文选取思路阴阳师年兽副本介绍 年兽伤害高不高魔兽世界怀旧服至今为止最劲爆的蓝贴——荣誉系统来啦!英雄联盟手游怎么充钱uc浏览器电视版下载超级精灵手表土系徽章怎么获得 洛克王国翼系徽章如何开启命运冠位指定FGO第六章特异点神圣圆桌领域新手通关全攻略更新公告丨斗气大陆魅力再现、火能挑战风云变幻暗黑复仇者 攻略,龙之谷黑暗复仇者EX技能怎么搭配 黑暗复仇者魔兽世界怀旧服史诗双手剑怎么获得 双手剑全属性效果介绍 汉娜之刃《魔兽世界:大灾变》狼人新手任务概览赛尔号奥尔德怎么获取及真身打法 关卡通关攻略详解魔兽世界6.0要塞追随者技能总览及搭配攻略火炬之光2法师加点技能(火炬之光中文版教程)手把手教你打祭坛 DNF极限祭坛详细攻略指南《魔兽世界TBC怀旧服》附魔1-375最省材料攻略《魔兽争霸3冰封王座》刀魂传奇v1.1.55正式版【三国杀】【逐日】1207OL正式服爆料谋姜维制图速递魔兽世界符文精金棒有什么用-符文精金棒作用及获取方法QQ飞车手游出现登录BUG怎么办?游戏无法登录解决方法一览游币怎么充值,4399游戏盒游币怎么充值鬼泣5维吉尔全难度全关卡S完美存档英雄联盟影流之主劫无限火力出装 天赋推荐魔兽世界乌龟服声望装备怎么获取 声望装备获取攻略黑市上能买到什么,黑市可以买到什么枪魔兽世界怀旧服德鲁伊天赋加点方案推荐魔兽世界单机版GM命令物品代码大全 (2)看剧吃什么才更香?魔兽世界安戈洛环形山怎么去?安戈洛环形山魔暴龙有几只?阿拉德每日计划通关5次推荐地下城,通关阿拉德每日限定地下城怎么完成魔兽世界考古专业怎么冲级(WLK考古地点推荐)
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.208

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