中高端社交网站建设服务商,淄博中企动力公司网站,discuz做商城网站,网站建设 项目要求一、if-else条件判断语句
Go中的if-else条件判断语句跟C差不多。但是需要注意的是#xff0c;Go中强制规定#xff0c;关键字if和else之后的左边的花括号{“必须和关键字在同一行#xff0c;若使用了else if结构#xff0c;则前段代码快的右花括号”}必须和关…一、if-else条件判断语句
Go中的if-else条件判断语句跟C差不多。但是需要注意的是Go中强制规定关键字if和else之后的左边的花括号{“必须和关键字在同一行若使用了else if结构则前段代码快的右花括号”}必须和关键字else if在同一行。Go和C不同的是条件判断语句不需要小括号()括起来
package mainimport fmtfunc 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是一个语句执行完之后num0才是判断表达式package mainimport fmtfunc main() {if num:10; num0 { //{必须同一行fmt.Println(aaaaaa)}
}二、switch-case语句
与C不同的是在Go语言中case是一个独立的代码块执行完毕后并不会紧接着执行下一个case所以不需要执行完一个case之后break但是为了兼容一些移植代码依然加入了fallthough关键字来实现执行完case语句之后紧接着执行下一个case语句。
package mainimport (fmt
)func main() {s : helloi : 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 : mathswitch 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 fmtfunc main() {for i: 0; i 10; i{fmt.Printf( %d ,i)}
}结果 for的初始语句可以被忽略 for的条件表达式也可以被忽略 for只有一个条件的循环 package mainimport fmtfunc main() {//1.忽略for的初始语句i : 0for ; i10 ; 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;j10; {fmt.Printf( %d ,j)j}fmt.Println()//4.for只有一个条件的循环var k int0for k 10{fmt.Printf( %d ,k)k}
}结果 for也可以无限循环 package mainimport fmtfunc main() {//4.for实现无限循环for ; ; {fmt.Printf(aaa)}
}四、goto/break/continue跳出循环
1.goto
goto关键字是跳出多层循环跳转到循环外面执行标签内的语句
package mainimport fmtfunc main() {for i:0; i10; i{for j:0; j10; j{fmt.Printf( i:%d , i)fmt.Printf( j:%d , j)if j3{goto goHereLa //跳出循环跳转到标签语句}}}fmt.Println(\n不会到这噢直接跳过去goHereLa标签内)//不会打印return //手动返回避免函数执行进入了标签代码中goHereLa:fmt.Println(\nthere le la la la,到这啦)
}结果
2.break
break和goto一样可以跟上标签但是表示退出某个标签对应的代码块标签要求必须定义在对应for, switch和select代码块上方
package mainimport fmtfunc main() {goHereLa:for i:0; i10; i{for j:0; j10; j{fmt.Printf( i:%d , i)fmt.Printf( j:%d , j)if j3{break goHereLa //跳出标签goHereLa里的代码块。即跳出循环外}}}fmt.Println(\n到这啦循环语句外面)//会打印
}结果
3.continue
Go中的continue和C中并没有什么不一样都是跳出本次循环继续下次循环。但是多加了一个功能即也可以像break一样加上标签表示开始标签对应的循环并仅限于for循环中使用
package mainimport fmtfunc main() {
goHereLa:for i:0; i5; i{fmt.Printf(\n i:%d , i)for j:0; j10; j{fmt.Printf( j:%d , j)if j3{continue goHereLa //跳出标签goHereLa里的代码块。即跳出本次循环继续下次循环}fmt.Println(当j是3之后不会打这个噢直接跳出本次循环啦)}}fmt.Println(\n到这啦循环语句外面)
}结果