当前位置: 首页 > news >正文

Go语言之条件判断循环语句(if-else、switch-case、for、goto、break、continue)

一、if-else条件判断语句

  • Go中的if-else条件判断语句跟C++差不多。但是需要注意的是,Go中强制规定,关键字if和else之后的左边的花括号"{“必须和关键字在同一行,若使用了else if结构,则前段代码快的右花括号”}"必须和关键字else if在同一行。
  • Go和C++不同的是,条件判断语句不需要小括号"()"括起来
package mainimport "fmt"func main() {var num int = 100if num == 0{//{必须同一行fmt.Println("aaaaaa")}else if num == 10{//必须同一行fmt.Println("bbbbbb")}else if num == 100{fmt.Println("cccccc")}else{fmt.Println("eeeeeeee")}
}
  • 与C++不同的特殊写法,num:=10是一个语句,执行完之后,num==0才是判断表达式
    package mainimport "fmt"func main() {if num:=10; num==0 { //{必须同一行fmt.Println("aaaaaa")}
    }
    

二、switch-case语句

  • 与C++不同的是,在Go语言中,case是一个独立的代码块,执行完毕后并不会紧接着执行下一个case,所以不需要执行完一个case之后break;但是为了兼容一些移植代码,依然加入了fallthough关键字来实现执行完case语句之后紧接着执行下一个case语句。
package mainimport ("fmt"
)func main() {s := "hello"i := 15switch {case s == "hello":fmt.Println("hello")fallthroughcase s == "world":fmt.Println("world")fallthrough//强行执行下个case语句case i >= 15 && i < 20://分支可以用表达式fmt.Println("!!!!呀呀呀")default:fmt.Println("bbbbb")}str2 := "math"switch  str2{case "hhhh","math"://一个分支可以对应多个值fmt.Println("math")fallthroughcase "aaaaa":fmt.Println("math222")case "cccc":fmt.Println("math333333")fallthroughdefault:fmt.Println("qqqqqqq")}
}

结果:在这里插入图片描述

三、for循环语句

  • 与C++不同,Go语言中的循环语句只支持for关键字,并不支持while和do-while结构

  • 例子:

    package mainimport "fmt"func main() {for i:= 0; i < 10; i++{fmt.Printf(" %d ",i)}
    }
    

    结果:在这里插入图片描述

  • for的初始语句可以被忽略

  • for的条件表达式也可以被忽略

  • for只有一个条件的循环

    package mainimport "fmt"func main() {//1.忽略for的初始语句i := 0for ; i<10 ; i++{fmt.Printf(" %d ",i)}fmt.Println()//2.忽略for的条件表达式for j:=0; ;j++{if j > 10{break}fmt.Printf(" %d ",j)}fmt.Println()//3.for忽略第三条语句for j:=0;j<10; {fmt.Printf(" %d ",j)j++}fmt.Println()//4.for只有一个条件的循环var k int=0for k <= 10{fmt.Printf(" %d ",k)k++}
    }
    

    结果:在这里插入图片描述

  • for也可以无限循环

    package mainimport "fmt"func main() {//4.for实现无限循环for ; ; {fmt.Printf("aaa")}
    }
    

四、goto/break/continue跳出循环

1.goto

  • goto关键字是跳出多层循环,跳转到循环外面,执行标签内的语句
package mainimport "fmt"func main() {for i:=0; i<10; i++{for j:=0; j<10; j++{fmt.Printf(" i:%d ", i)fmt.Printf(" j:%d ", j)if j==3{goto goHereLa //跳出循环,跳转到标签语句}}}fmt.Println("\n不会到这噢,直接跳过,去goHereLa标签内")//不会打印return //手动返回,避免函数执行进入了标签代码中goHereLa:fmt.Println("\nthere le la la la,到这啦")
}

结果:在这里插入图片描述

2.break

  • break和goto一样,可以跟上标签,但是表示退出某个标签对应的代码块,标签要求必须定义在对应for, switch和select代码块上方
package mainimport "fmt"func main() {goHereLa:for i:=0; i<10; i++{for j:=0; j<10; j++{fmt.Printf(" i:%d ", i)fmt.Printf(" j:%d ", j)if j==3{break goHereLa //跳出标签goHereLa里的代码块。即跳出循环外}}}fmt.Println("\n到这啦,循环语句外面")//会打印
}

结果:
在这里插入图片描述

3.continue

  • Go中的continue和C++中并没有什么不一样,都是跳出本次循环继续下次循环。但是多加了一个功能,即也可以像break一样加上标签,表示开始标签对应的循环,并仅限于for循环中使用
package mainimport "fmt"func main() {
goHereLa:for i:=0; i<5; i++{fmt.Printf("\n i:%d ", i)for j:=0; j<10; j++{fmt.Printf(" j:%d ", j)if j==3{continue goHereLa //跳出标签goHereLa里的代码块。即跳出本次循环,继续下次循环}fmt.Println("当j是3之后不会打这个噢,直接跳出本次循环啦")}}fmt.Println("\n到这啦,循环语句外面")
}

结果:
在这里插入图片描述

http://www.lryc.cn/news/37021.html

相关文章:

  • 深入理解AQS
  • JVM学习笔记十:执行引擎
  • 【2023-03-10】JS逆向之美团滑块
  • 全志V853芯片放开快启方案打印及在快起方式下配置isp led的方法
  • 大数据 | (一)Hadoop伪分布式安装
  • Django/Vue实现在线考试系统-06-开发环境搭建-Django安装
  • KaiwuDB 时序引擎数据存储内存对齐技术解读
  • IR 808 Alkyne,IR-808 alkyne,IR 808炔烃,近红外吲哚类花菁染料
  • elasticsearch
  • 并发编程---java锁
  • 品牌营销 | 学习如何最大限度地发挥品牌营销的作用
  • Linux驱动的同步阻塞和同步非阻塞
  • LearnOpenGL-光照-5.投光物
  • 【C语言】每日刷题 —— 牛客语法篇(1)
  • 【深度学习】Subword Tokenization算法
  • 五分钟了解支付、交易、清算、银行等专业名词的含义?
  • 4个工具,让 ChatGPT 如虎添翼!
  • 初识PO、VO、DAO、BO、DTO、POJO时
  • [2.2.4]进程管理——FCFS、SJF、HRRN调度算法
  • 【代码随想录Day55】动态规划
  • Java开发 - 消息队列前瞻
  • MySQL连接IDEA详细教程
  • 线程(操作系统408)
  • 功耗降低99%,Panamorph超清VR光学架构解析
  • 【数据结构】带你深入理解栈
  • 认识CSS之如何提高写前端代码的效率
  • Vue中watch和computed
  • 华为鲲鹏+银河麒麟v10 安装 docker-ce
  • Lambda,Stream,响应式编程从入门到放弃
  • C语言枚举使用技巧