Go语言之条件判断循环语句(if-else、switch-case、for、goto、break、continue)
创始人
2024-06-01 08:05:11
0

一、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到这啦,循环语句外面")
}

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

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...