欢迎来到 常德市某某医疗设备销售部
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
2.9 Go语言中的Switch
  来源:常德市某某医疗设备销售部  更新时间:2024-05-08 13:13:42

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


友情链接九寨沟旅游全攻略贪婪洞窟梦境模式80-100层攻略 新手攻略之梦境模式梦幻新诛仙:巫神祭坛十人团队副本打法心得梦幻西游天罡印之谋成就怎么做三国志10——攻略分享,北欧女神负罪者,雷神在古希腊神话和北欧神话中分别是谁延禧攻略全集免费在线观看史上最省钱的旅游攻略,不服你打我三国志13杀手攻略,三国志131042版单挑触发及斩杀解析 单挑怎么触发「英杰传」新手游开局入门攻略!七天教你玩转前期!侠客风云传dlC内容一览 新增天王线夜叉仙音可攻略《古墓丽影崛起》图文攻略 全章节剧情图文攻略古墓丽影暗影完美剧情图文攻略 详细流程+全收集(13)psp最终幻想7攻略(PSP最终幻想7攻略图文版)最强蜗牛米国南北方攻略 米国选择推荐梦幻西游房屋攻略官居几品人鱼剧情怎么触发 官居几品无敌版剧情触发攻略最全梦幻西游秘境降妖攻略从0开始,附秘籍、图解,让你提前过!陕西华山一日游攻略全新版,游玩(线路+攻略+费用)【真 女神转生3 HD】全流程攻略指北 Ver1.1《生化危机2重制版》双线全剧情流程图文攻略最终幻想7 攻略专辑《三国志七》全攻略《女神异闻录5S》图文流程攻略汇总(完)明星志愿2000详细攻略(明星志愿2000怎么玩)《三国志13》必知18事解析攻略 玩法技巧推荐gba牧场物语攻略(gba牧场物语攻略大全)【荒野大镖客2】每日任务更新攻略2022年9月23日生化危机3重制版皇帝成长计划攻略大全河南2日游自助游攻略,河南龙门石窟跟团轻松两日游省钱玩法神都洛阳-若问古今兴废事,请君只看洛阳城(老君山+龙门石窟二日游保姆攻略)魏璎宁的真正死因nds游戏《口袋妖怪银》里的攀岩技能怎么得到?弓箭传说攻击暴击收益解析DOTA2剑圣大型水友攻略 蛮不讲理的单杀之王单机新倚天屠龙记游戏攻略,独家攻略横扫江湖 新倚天屠龙记游戏全攻略皇帝成长计划2功略攻略介绍三国志战棋版七级地攻略介绍双十一京东优惠券攻略大全,让您抢购省钱又省心!
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.3053

Copyright © 2024 Powered by 常德市某某医疗设备销售部   sitemap