安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

GoWeb编程实战(2)流程控制语句

2月2日 碧落盟投稿
  流程控制语句
  每个语言都会介绍到流程控制语句,Go语言同样具有这些。比如分支结构ifelse、for循环、forrange循环、switchcase语句、goto语句、break语句以及continue语句。下面,博主来分别举例介绍使用方式。ifelse语句
  基本来说,Go语言的ifelse语句与Java语言基本一样。比如,我们这里根据值得大小,选择输出,代码如下所示:funcmain(){varbint9ifb9{fmt。Println(大于)}elseif(b9){fmt。Println(等于)}else{fmt。Println(小于)}}for循环语句
  与其他语言不同,Go语言只有for循环,没有while和dowhile循环。而且其使用方法与C语言非常接近。下面,我们循环输出1100个数,代码如下所示:variintfori0;i100;i{fmt。Println(i)}用for循环实现dowhile
  当然,如果想使用其他语言的dowhile语句,我们可以将for循环写成这样:variint0for{iifi50{break}}用for循环实现while
  同样的,我们也可以将for循环实现while循环的效果,代码如下所示:i:0fori10{fmt。Println(i)i}break指定跳出循环
  学过C语言的,应该也知道Go语言可以直接goto跳到指定代码。而for循环里面,我们也可以通过break语句直接决定终止哪个循环。比如:vari,jintJumpLoop1:fori1;i100;i{JumpLoop2:forj0;j{fmt。Println(j)ifi10{breakJumpLoop1}else{breakJumpLoop2}}}
  感兴趣的可以删除else分别测试一下,看看最终效果。不过一般来说,如果不指定JumpLoop1,默认最内部的break只会跳出最内部的for循环。continue语句
  和其他语言一样,我们有时候也只需要跳出本次循环,所以Go语言同样给我们提供了continue语句。当然,continue语句后面同样可以跟标签,比如不跳出最内层的本次循环,而跳出最外层的本次循环,可以这样写:vari,jintJumpTag:fori1;i100;i{forj0;j{fmt。Println(j)ifi10{continueJumpTag}}}
  本段代码执行,到i10,j9之后,只会输出0。因为i10时,循环都在j0输出一次之后,跳出了最外层的循环,故不会有其他值。forrange循环
  在其他编程语言中,我们通常会对map进行迭代。同样的,Go语言给我们提供了forrange循环,它也是一种迭代结构。其语法如下:forkey,value:range复合变量值{。。。。逻辑语句}遍历数组
  首先,我们需要了解数组的定义,与普通变量定义一样,只是多了一个〔〕号。无初始值定义varnum〔〕int有初始值定义varnum〔〕int{1,2,3,4,5,6,7,8,9,0}
  下面,我们来展示如何遍历上面的数组。代码如下所示:声明数组情况下的遍历varnum〔〕int{1,2,3,4,5,6,7,8,9,2}forkey,value:rangenum{fmt。Println(key,key,value,value)}直接遍历临时创建的数组forkey,value:range〔〕int{1,2,3,4,5,6,7,8,9,2}{fmt。Println(key,key,value,value)}遍历字符串
  与某些语言一样,Go语言的字符串其实也是单个字符组成的数组,我们同样可以在程序中,对Go字符串进行遍历。代码如下:varnamestringliyuanjinglyjforkey,value:rangename{fmt。Printf(keyd,valuec,key,value)}遍历map
  对于map就更简单了,在遍历的时候,key,value正好对应其键值对。具体遍历方式如下所示:获取key,valuem:map〔string〕string{name:liyuanjing,age:29,}forkey,value:rangem{fmt。Printf(keys,values,key,value)}只获取valuem:map〔string〕string{name:liyuanjing,age:29,}for,value:rangem{fmt。Println(value)}
  第二种方式中的key变更为了,这个下划线就是匿名变量,可以理解为占位符。匿名变量本身不参与空间分配,也不会占用一个变量的名字。同样的,也可以对value使用匿名变量,只获取key。遍历通道(channel)
  什么是通道,我们后面介绍,这里我们直接来定义一个通道,看看如何进行遍历。a:make(chanint)gofunc(){a1a2a3close(a)}()forv:rangea{fmt。Println(v)}
  上面代码的逻辑:
  1。创建一个整型类型的通道并实例化2。通过关键字go启动一个goroutine3。将数字传入通道,实现的功能是往通道中推送数据1234。结束并关闭通道5。用forrange循环对通道a进行遍历,即不断地从通道中接受数据直到通道被关闭switchcase语句
  Go语言改进了C语言的switchcase语句,表达式不必为常量,甚至不必为整数。而且case与case之间是独立的代码段,不需要通过break语句跳出当前case,以避免执行到下一个case。varname周杰伦switchname{case周杰伦:fmt。Println(歌手)case王昭君:fmt。Println(和亲使者)default:fmt。Println(查无此人)}
  上面代码运行结果只会打印歌手,没有break也不会执行下面的语句,这一点博主觉得Go语言设计的不错。一个分支多个值
  当然,其实switchcase语句中的case,并不仅仅只能选择一个词,比如有的明星,即使演员又是歌手,难道用ifand进行判断?varname歌手switchname{case歌手,演员:fmt。Println(易烊千玺)case作家:fmt。Println(盐野七生)default:fmt。Println(啥也不是)}分支表达式
  case语句不仅仅可以跟常量,也可以和if一样添加表达式。示例如下:varnum22switch{casenum0num22:fmt。Println(是22没错)default:fmt。Println(啥也不是)}
  如上面代码所示,switch在这种情况下,不必再需要加用于判断的变量。goto语句
  Go语言最知名的语句,就是goto语句。通过goto语句可以直接跳转到指定的标签,进行代码之间的无条件跳转。另外,goto语句也可以用作跳出循环,避免重复退出等场景。
  在前文中,我们通过break直接跳出到最外层的循环,现在我们改变当时的代码,使用goto来实现结束循环。funcmain(){vari,jintfori1;i100;i{forj0;j{fmt。Println(j)ifi10{gotoendTag}}}returnendTag:fmt。Println(循环结束)}
  如上面代码所示,我们直接指定跳转到endTag标签处,这种标签也是自己自定义命名的。
  不过需要注意的是,endTag标签上面有一个return,这是因为不满足条件则不执行endTag标签语句,不然,哪怕结束,程序也会顺序执行。
  goto这么方便,读者想到了哪些应用场景呢?
  相信读者都在其他语言中,抛出过各式各样的异常,特别是很多网络请求其实异常差不多,但遇到一个抛一个是不是非常烦?
  而goto就很简单了,可直接跳到指定异常,这样用一个异常就可以解决所有相同异常。err:getEmail()iferr!nil{gotoendTag}errgetUser()iferr!nil{gotoendTag}endTag:fmt。Println(err)异常处理
  这里,我们假设有2个方法,获取用户名与邮箱,但其实他们抛出的异常都相同,那么可以直接跳转到指定的标签处,进行相同异常的处理。而不必每个都抛出异常写一遍。
投诉 评论 转载

目前最好的骁龙870处理器的手机有哪些?要说最好的870手机,那估计还得是OPPOFindX3,那怕是小米最新发布的小米12X,价格来到3199起,但单纯从产品角度来说,OPPOFindX3依然完败小米12X,这依然……手慢无这款75寸大屏电视只要3999元今天是除夕,相信有不少朋友正准备和家人一起观看春晚。不得不说,购买一款大屏的电视能带来更好的观看体验。今天就给大家推荐一款海信的75寸电视,秒杀价仅为3999元。这款电视的屏占……烟花或达16级,强风暴雨高潮位三重暴击!五条路线剑指浙江据中国天气网报道,北方强降雨中心已经逐渐北移,目前在邯郸、邢台中西部、石家庄南部和西部、保定中南部已经出现了暴雨到大暴雨,过程累积雨量可达200到300毫米,个别地点可达300……万物互联的时代GalaxyZFold25G折出新未来随着技术的不断进步,手机的屏幕也在逐渐变大,虽然大屏幕手机可以带来更为开阔的视觉效果,但是也占据了口袋不小的空间。因此,折叠屏成为用户和手机厂商接下来最为关注的重点。目前……纵擎中原天生奇骏东风日产全新一代奇骏试驾上市会郑州站圆满落幕9月11日,纵擎中原天生奇骏东风日产全新一代奇骏试驾上市会郑州站活动在郑州红土沟越野试驾基地盛大举行。东风日产华中一区总监叶可先生、东风日产郑州区域督导任一先生、东风日产……消息称Keep调整组织架构,或冲击上市Tech星球2月17日消息,据新浪科技,智能运动运营商Keep近期进行了一轮大范围组织架构调整,此次组织架构调整旨在提效提升用户数,促进活跃用户和收入增加,提高组织效率。……比亚迪成全球首家停产燃油车车企北京商报讯(记者刘洋刘晓梦)4月3日,比亚迪发布公告称,根据公司战略发展需要,自今年3月起停止燃油汽车的整车生产。未来,比亚迪在汽车版块将专注于纯电动和插电式混合动力汽车业务。……晚上做什么副业最好,每天能有个2080的收入?滴滴、美团虽然都不建议尤其是有高中以上学历的在8线城市他们确实辛苦但收入却是普通人的几倍如果你能在保证健康的同时努力一把在八线城市、八……中国联通发布5G新型智慧城市白皮书据中国联通微博消息,近日,在由工信部指导,中国工信出版传媒集团主办的2022ICT行业趋势年会上,中国联通智能城市研究院正式发布《中国联通5G新型智慧城市白皮书(2。0版)》。……GoWeb编程实战(2)流程控制语句流程控制语句每个语言都会介绍到流程控制语句,Go语言同样具有这些。比如分支结构ifelse、for循环、forrange循环、switchcase语句、goto语句、br……量子传感鼎新带动革故记者赵广立编者按遇事不决,量子力学。这句谑语的背后,隐喻着量子力学这一前沿科技在公众面前的深奥与神秘。然而,尽管看似遥不可及,量子科技尤其是量子信息产业化的步伐已然……英特尔将在11月19日发布第12代酷睿系列处理器,及配套的Z随着英特尔即将发布第12代酷睿系列处理器,最近两天相继传出了美国和欧洲地区零售商的定价,似乎已在做发售准备了。此前有消息指出,英特尔计划于2021年10月或11月(大概在10月……
Android12正式发布,小米OV首批升级,功能亮点乏善可商务部支持新能源汽车加快发展鼓励地方开展绿色智能家电下乡和以中国移动董事长回应3年投资2000亿没有听说懒人专用,智能扫拖机器人推荐云米集尘扫拖机器人AlphaLi千元词典笔选谁好?阿尔法蛋AI词典笔T10优学派P6网易有道中国面板技术大幅提升,OLED面板始祖三星不得不求助中国企业油转电,比亚迪新能源车型畅销能教会传统车企什么?iPhone13mini值得购买吗?原创笔记004前端开发的学习路线当你所有银行卡都被法院冻结了后,吃饭都成问题了限高还有意义吗比特币实验的终结特斯拉上调Model3和ModelY价格

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利