草庐IT

Switch-Case

全部标签

C语言中的switch语句基本用法

导语:switch语句是一个多分支选择语句,并且可以支持嵌套switch语句的基本格式switch语句通过将表达式的值与常量值进行比对,如果相等则执行后面的语句,如果不相等则跳到下一个case语句,当表达式和常量值相等,switch语句会将当前case语句以及后面所有的case语句全部输出。假如我们要实现用户输入一个数字来判断今天是星期几,那么就可以用下面的代码实现//#define_CRT_SECURE_NO_WARNINGS1//#include//intmain()//{// intday=0; // printf("请输入一个数字\n");// scanf("%d",&day);

go - 代码行为取决于 switch 运算符中的类型顺序,如何摆脱它?

最近开始学习Go语言。我试图理解Go中的接口(interface)原理,但被一件事完全迷惑了。鸭子原则说:如果某物叫声像鸭子,走路像鸭子,那么它就是鸭子。但我想知道如果我们有三个这样的接口(interface),Go会如何表现://InterfaceAtypeInterfaceAinterface{ActionA()string}//InterfaceBtypeInterfaceBinterface{ActionB()string}和接口(interface)C,它做一些不同的事情,但具有类似于接口(interface)A和B功能的功能://InterfaceCwithmethodsA

go - 代码行为取决于 switch 运算符中的类型顺序,如何摆脱它?

最近开始学习Go语言。我试图理解Go中的接口(interface)原理,但被一件事完全迷惑了。鸭子原则说:如果某物叫声像鸭子,走路像鸭子,那么它就是鸭子。但我想知道如果我们有三个这样的接口(interface),Go会如何表现://InterfaceAtypeInterfaceAinterface{ActionA()string}//InterfaceBtypeInterfaceBinterface{ActionB()string}和接口(interface)C,它做一些不同的事情,但具有类似于接口(interface)A和B功能的功能://InterfaceCwithmethodsA

go - 执行多个 switch case

我有以下代码:packagemainimport("fmt")funcmain(){switchnum:=75;{//numisnotaconstantcasenum如果我想执行下一个案例,我可以使用fallthrough,但它不会根据案例检查条件。我需要检查条件:我想像往常一样继续switchcase,即使它遇到了一个case。我也想用fallthrough检查下一个案例条件,有什么办法可以做到吗? 最佳答案 简短回答:不,您不能使用fallthrough检查后续的case条件,因为fallthrough是无条件的并且强制执行下一

go - 执行多个 switch case

我有以下代码:packagemainimport("fmt")funcmain(){switchnum:=75;{//numisnotaconstantcasenum如果我想执行下一个案例,我可以使用fallthrough,但它不会根据案例检查条件。我需要检查条件:我想像往常一样继续switchcase,即使它遇到了一个case。我也想用fallthrough检查下一个案例条件,有什么办法可以做到吗? 最佳答案 简短回答:不,您不能使用fallthrough检查后续的case条件,因为fallthrough是无条件的并且强制执行下一

go - 通过 switch 语句分配类型/创建结构

我在弄清楚如何在switch语句中创建结构或在switch语句中为其分配类型时遇到了一些麻烦。这是一些无法正常工作的代码,说明了我正在尝试做的事情:varresultswitchstructPickingString{case"struct1":result=new(struct1)case"struct2":result=new(struct2)}//unmarshallsomejsonintotheappropriatestructtypeiferr:=json.NewDecoder(resp.Body).Decode(&result);err!=nil{log.Println(e

go - 通过 switch 语句分配类型/创建结构

我在弄清楚如何在switch语句中创建结构或在switch语句中为其分配类型时遇到了一些麻烦。这是一些无法正常工作的代码,说明了我正在尝试做的事情:varresultswitchstructPickingString{case"struct1":result=new(struct1)case"struct2":result=new(struct2)}//unmarshallsomejsonintotheappropriatestructtypeiferr:=json.NewDecoder(resp.Body).Decode(&result);err!=nil{log.Println(e

go - 推迟 : usage in case of long running functions?

下面是一个示例函数,它从连接池中获取到数据库的连接并执行查询并处理返回的结果。funcdbQuery()error{con:=db.getConn()result,err:=con.Query()iferr!=nil{returnerr}defercon.close()//orcon.close()//Processingtheresulttakesalongtimereturnnil}这种情况下处理结果时间比较长,并且没有为连接调用close,也就是说没有返回到连接池中。是不是直接调用con.close()这种情况当我们知道资源即使在不需要时也被保留了很长时间,就像这样吗?

go - 推迟 : usage in case of long running functions?

下面是一个示例函数,它从连接池中获取到数据库的连接并执行查询并处理返回的结果。funcdbQuery()error{con:=db.getConn()result,err:=con.Query()iferr!=nil{returnerr}defercon.close()//orcon.close()//Processingtheresulttakesalongtimereturnnil}这种情况下处理结果时间比较长,并且没有为连接调用close,也就是说没有返回到连接池中。是不是直接调用con.close()这种情况当我们知道资源即使在不需要时也被保留了很长时间,就像这样吗?

go - 在 Go select 构造中,我可以在两个 case 语句中发送和接收到无缓冲 channel 吗?

我希望这段代码进入无限循环,发送和接收消息。但它似乎既不发送也不接收。为什么?gofunc(){for{select{casech1 最佳答案 channeldocumentationsays:Ifthecapacityiszeroorabsent,thechannelisunbufferedandcommunicationsucceedsonlywhenbothasenderandreceiverareready.selectdocumentationsays:Ifoneormoreofthecommunicationscanpr