欢迎来到 许昌市某某信息技术有限公司
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
2.9 Go语言中的Switch
  来源:许昌市某某信息技术有限公司  更新时间:2024-04-29 09:02:11

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


友情链接小 纸 条 给 你 ,悄 悄 地 看三国杀:盘点那些分分钟恶心到你的武将,遇到真的想吐他一脸魔兽世界(WOW)6.1PTR 2月14日职业改动总汇仙剑奇侠传手游下载哪个网游加速器比较好用?回归玩家看过来 DNF泰波尔斯机制汇总详细介绍仙剑奇侠传5激活码免费可用版DNF武神装备深度解析:打造无敌战斗力的关键6神话 2臻彩 18限定 12传说 18史诗 97皮肤 42炫彩 130英雄 青铜圣僧现世! 《斗战神》全新职业迎接公测《阴阳师》集结召唤活动介绍 集结召唤规则一览英雄联盟一区叫什么名字,lol一区名字及由来介绍地下城与勇士阿修罗堆哪个属性-地下城阿修罗属性选择推荐王者玩家推荐:永恒梦魇NOC打野实战解析塔瑞斯世界森林祭坛怎么打 森林祭坛打法攻略好玩的休闲游戏排行榜前十名 比较休闲的手游推荐倒计时一天 DNF希洛克攻坚战即将上线暗黑3 死灵法师新潮流——血套尸矛流吕布与貂蝉并无奸情,历史上董卓败亡的原因是什么圣枪游侠天赋加点推荐2023lolADC圣枪游侠玩法攻略专家说可以下载外服手游的app分析全新召唤兽技能 壁垒击破泰拉瑞亚克苏鲁之脑怎么召唤 泰拉瑞亚隐藏boss克苏鲁如何召唤3.剩余的第一星系关卡通过方法(露西欧、卡酷、赫尔卡星)王者荣耀暴君刷新间隔几分钟 王者荣耀暴君刷新时间间隔是多少王者荣耀日之塔英雄推荐dnf95剑帝改版加点王者荣耀至尊宝什么时候返场2020 王者荣耀至尊宝2020返场时间哪个网游加速器比较好用?仙境传说RO爱如初见商人技能加点详解吞食天地曹魏的野望攻略,吞食天地时空之轮春节版单通攻略,最容易通关的英雄鬼泣5steam通关存档 附使用教程吞食天地-时空之轮-第四季蜗牛移动APP无法登陆,微信小程序,公众号全部失灵地下城堡3熔炉之城炎魔打法攻略-地下城堡魂之诗熔炉之城炎魔副本原神稻妻声望系统详解及开启步骤指南地下城与勇士(DNF)韩服正式服TB改版后职业点评 鬼泣增强还是削弱了DNF为什么玩的人越来越少了(似乎全靠旭旭宝宝在撑着)《三国杀》司马懿技能是什么 司马懿技能解析介绍司维司群抗体-药物缀合物和使用方法与流程
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.1883

Copyright © 2024 Powered by 许昌市某某信息技术有限公司   sitemap