草庐IT

Switch-case

全部标签

javascript - Switch Case 语句中的错误重复 Const 声明

我有以下代码,但收到错误“重复声明query_url”。switch(condition){case'complex':constquery_url=`something`;break;default:constquery_url=`something`;break;}我知道query_url被声明了两次,这是不对的。但我不知道如何解决这个问题。有人可以帮助解决这项工作的正确方法吗? 最佳答案 尝试将案例包装成block:switch(condition){case'complex':{constquery_url=`somethi

javascript - 在 JavaScript switch 语句中假设严格比较是否安全?

我有一个变量,它可以是bool值false,也可以是整数(包括0)。我想把它放在一个switch语句中,例如:switch(my_var){case0://Dosomethingbreak;case1://Dosomethingelsebreak;casefalse://Someothercode}在我的GoogleChrome测试中,它似乎工作得很好,但我有点紧张使用它,因为我担心在某些浏览器中,如果my_var是false,它可能会执行自0==false以来的第一个case。我只是想知道JavaScript中是否有任何官方说明switch语句将使用严格比较使得0!==false,但

go - 如何使用 reflect.Type 对 switch 进行断言

我正在使用structs轻松迭代结构字段的库,例如:packagemainimport"github.com/fatih/structs"typeTstruct{}funcmain(){s:=structs.New(T{})for_,field:=ranges.Fields(){switchfield.Kind(){casebool://dosomethingcasestring://dosomething}}}目前上面的代码不起作用,因为field.Kind是一个reflect.Type。有没有可能让它以某种方式工作?谢谢。 最佳答案

go - 这个 go switch 语句有什么问题?

有人能看出为什么这个开关不起作用吗?funcmain(){reader:=bufio.NewReader(os.Stdin)text,_:=reader.ReadString('\n')fmt.Print(text)switchtext{case"a":fmt.Print("A\n")case"b":fmt.Print("B\n")case"c":fmt.Print("C\n")default:fmt.Print("DEFAULT\n")}}在此语句中,始终返回默认值,但在对switch表达式进行硬编码时,switchblock会正常工作。查看ReadString()函数代码,它返回一

select - Go语言——为多个select case运行相同的代码

假设我们有多个通知源(channel),我们想对其中一些通知事件执行一些类似的任务。例如,考虑我们每10分钟调用一次doSomething()以及根据用户请求调用一次的情况。Go中的可能实现可能是这样的:varticker=time.NewTicker(10*time.Minute)nowDoSomething:=make(chantime.Time,1)for{select{case还有什么其他的(或许更好的)方法可以实现类似的功能? 最佳答案 也许您可以使用reflect包中的Select函数来做到这一点:funcSelect(

go - 在 Go 中,有什么方法可以比较两个没有嵌套 switch 语句的混合类型接口(interface)?

我发现,Go的interface{}类型是该语言最好的也是最烦人的特性。我正在尝试创建一个简单的用户可自定义的验证规则解决方案,用户可以在其中定义:比较运算符。比较操作数。指向要测试的值的映射键。还有一个简单的bool表达式解析器,允许用户使用AND和OR组合多个规则。到目前为止一切正常,表达式可以被成功解析、标记化和评估,但它在给定数据上运行规则会导致问题。这是实际评估数据的函数的当前版本:/*validatereturnsabooleanvaluedenotingwhetheratestwassuccessful.Thisfunctionwillpanicifthetypeasse

go - Switch case 语句落空为 default

我是新手,无法弄清楚为什么最后一个case子句(连接和测试)会变成默认值。但是那些带有换行符的(exit\r\nandconnect\r\n)不没有fallthrough语句。我已经尝试标记开关并调用break[lbl]但默认block仍然被执行packagemainimport("fmt""strings""bufio""os")funcmain(){varcmdstringbio:=bufio.NewReader(os.Stdin)fmt.Println("Hello")proceed:=trueforproceed{fmt.Print(">>")cmd,_=bio.ReadStr

javascript - 转到 : regexp to swap cases

我想在Go中使用正则表达式交换大小写。我尝试在Javascript中使用类似的方法,但我不知道如何让Go理解$符号。funcswapcase(strstring)string{varvalidID=regexp.MustCompile(`[A-Z]`)returnvalidID.ReplaceAllString(str,strings.ToLower(str))/*varvalidID=regexp.MustCompile(`[a-z]`)returnvalidID.ReplaceAllString(str,strings.ToUpper(str))*/}这是我的尝试。它适用于将所有大

for-loop - GO - 递归函数中的 switch 语句

我有一个正在尝试实现的算法,但从技术角度来看,目前我完全不知道如何实现。我们有一片5个float:mySlice:=[float1,float2,float3,float4,float5]还有一个switch语句:aFloat:=mySlice[index]switchaFloat{case1:{//dosomething}case2:{//dosomething}case3:{//dosomething}case4:{//dosomething}case5:{//dosomething}default:{//somehowgobacktoslice,takethenextsmalle

通过使用值的 slice 作为带有 switch 语句的 case 来匹配一个值

我知道您可以通过用逗号分隔值来将多个值与switch语句匹配:funcmain(){value:=5switchvalue{case1,2,3:fmt.Println("matches1,2or3")case4,5,6:fmt.Println("matches4,5or6")}}http://play.golang.org/p/D_2Zp8bW5M我的问题是,你能否通过使用多个值的slice作为case(s)来将多个值与switch语句匹配?我知道这可以通过使用ifelse语句和“Contains(slice,element)”函数来完成,我只是想知道它是否可能。也许是这样的?func