范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

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

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

刘作虎向潜规则开刀?618高配版优惠才是真良心一年一度的618还有最后几个小时就要开始了,相信大家都已经选购好了自己心仪的东西,就等待付尾款了。618作为年中大促,最早由京东发起,手机自然成了这场购物节的主角。但不知道大家有没支持数十款机型!鸿蒙系统尝鲜计划出炉,荣耀用户要失望了鸿蒙系统是华为在2019年开发者大会上发布的分布式操作系统,其最大的特点就是多终端分布式。其不仅可以运行在手机上,电视和其它智能家居产品都可以运行,实现多设备协同工作,从而实现万物失去华为的光环,荣耀却把目标定成全球第一,5G旗舰已在路上数据显示,荣耀从一个全新的品牌,到年出货量超7000万,仅用了短短8年的时间。在荣耀飞速成长的背后,华为功不可没。但同样,在华为手机业务受困后,荣耀作为华为子品牌也无可避免地受到了主播二驴老婆卖山寨机,一月销售4。7亿元。二驴为什么这么嚣张?近日快手主播驴嫂平荣在直播中带货一款叫做朵唯12Pro的手机。更是在直播中大喊原价4999的朵唯手机,只要在直播间购买,只要999元。就这还有优惠,驴嫂平荣大喊自己拿钱再补贴100鸿蒙OS正式版首批名单曝光,适配速度让人意外,8款机型恭喜了华为将会在6月2号晚上召开新品发布会,已经确定的产品包括鸿蒙OS2。0正式版,以及新款的华为Watch3,以及MatepadPro2。如果你对华为的新品感兴趣,那么两款定位旗舰级别谷歌ampampquot除名ampampquot华为!华为彻底无缘新版安卓12系统鸿蒙OS迎来最佳机遇5月29日讯相信大家都知道,针对来势汹汹的华为鸿蒙OS系统,谷歌也在近日正式发布了新一代Android12系统,这也是谷歌发布第十二个大版本的Android12系统,也是目前全球第京东物流上市!或许将改写食品行业?5月28日,京东物流在港股上市,开盘涨14,市值2820亿港元,成为中国第二值钱的物流公司,仅次于顺丰。大众对于京东物流的印象,更多地停留在京东商城很多商品能够做到当天下单,当天送一加618玩大了新旗舰立减500换机补贴,苹果用户也可以旧换新今年的618年中大促提前登场,不少厂商已经正式开始相关福利活动,让人意外的是,降低力度相较往年更猛了。以一加为例,以往这家品牌参加电商活动时,新品根本不会降价,不过今年在销售方式上如何绕过苹果手机AppleID激活手机?分享两个免费绕ID的软件有很多人使用iPhone久了以后就会忘记自己的AppleID密码,或者手机长时间不用后忘记了密码,或者捡到了苹果手机后打不开,需要AppleID才能打开,苹果手机刷机以后需要通过A本轮牛市走到哪了?自去年12月中旬比特币突破2万美元历史最高价算起,12月2月是比特币快速上涨阶段,到达2月底涨速就放慢了,真正暴涨的时间只有12月中旬2月底这段时间。慢慢到4月中旬,比特币才触及6vivoX60Pro样张专业影像表现,原相机直出即大片去年,vivo成功携手卡尔蔡司的消息,也一度成为了数码的焦点话题。在不久后,双方的首项合作成果vivoX60系列顺利落地。而该系列中的高端影像旗舰vivoX60Pro,也在今年年初
以太坊开发者宣布更新合并时间表开发人员蒂姆贝科更新了以太坊网络上备受期待的合并的信息和时间表。这不会是六月,但可能会在之后的几个月内。目前还没有确定的日期,但我们肯定已经进入了以太坊工作量证明的最后一章。最近的Web3。0时代真的来了吗?近几年,随着区块链技术的发展和渐趋成熟,以区块链为基础设施的领域如DeFi元宇宙NFT等,也都获得了显著进步和长足发展。其中,Web3。0作为与区块链发展相辅相成的技术生态,更是被大厂裁员潮,逼疯多少HR在互联网圈里,三四月被称为金三银四跳槽季。但在今年三月,互联网大厂小厂却是裁员消息不断。尤其是为了体面,每次裁员企业都会整出各种花词。继优化淘汰向社会输送人才后,京东和B站更是将本马斯克为什么赌注一体式压铸技术?还不是被降本20馋的虽然马斯克是全球首富,身价2903亿美刀,也说过钱不过是一个数据条,但可能没有人比他对每一分钱的使用更抠,对成本压缩更疯狂的了。卖房支援SpaceX火星计划把总部从加州搬到德州公关支付宝再放大招,太爽了芜湖现在开始,你的支付宝可以更加清爽啦!在此之前,支付宝首页总是会出现各种营销信息和活动推荐,显得非常凌乱。现在支付宝新增了首页栏目卡片的开关,可以一键关闭首页的轮播广告啦大家可以我国领先世界的52项科学技术,有的好陌生一高铁技术。我国除了已经广泛使用的时速350千米的高铁外,时速600千米的磁悬浮高铁已经基本成熟。国内高铁里程已经达到3万千米。二5G技术。大家比较熟悉,就是来自华为。三超级钢技术什么是电子招投标?电子招投标优势何在?电子招投标持续健康的发展提高了整个招投标行业的发展速度,电子招投标结合互联网大数据人工智能等技术手段创造了高效的运作模式,对招标方投标方招标代理等各方也带来了前所未有的机遇与挑战。感觉。net越来越凋零了,虽然dotnet6已经出来有段时间了,有没有这种感觉?凋零没?感觉不出。国内用net少,还主要是因为版权费用原因,Net本身并没错,而且使用起来非常舒服。做企业内部管理应用,选net是非常足够高效的。做互联网开发,net不是首选,但也华为再度开售两年前发布的麒麟990手机,不仅支持5G,还能拍月亮进入到2022年,华为手机业务依旧是举步维艰,Mate50系列迟迟不见踪影。华为在今年已经推出了Mate40EProP50Enova9SE等机型,除了Mate40EPro支持5G,谷歌2030年前100使用无碳能源运作数据中心品玩4月14日讯,据CNBC,谷歌能源总监迈克尔特雷尔(MichaelTerrell)表示,随着整体互联网使用量和业务的增长,该公司的用电量也在增长。与此同时,谷歌制定了一个非常激工信部强化个人信息保护,加快出台工信领域数据安全管理办法北京商报讯(记者陶凤吕银玲)个人信息泄露通常是被电信网络诈骗的开始,如何加强信息保护?在4月14日国新办举行的新闻发布会上,工业和信息化部网络安全管理局局长隋静介绍,将加快出台工信