go基础4-流程控制
所有语言的流程控制都是三个 顺序执行 if else for
一 if else 分支结构
if 表达式1{
}else if 表达式2 {
} else{
}
func ifDemo1(){
score := 65
if score <= 90 {
fmt.Println("A")
}
}
1,2 if 条件特殊写法 在 if表达式之前加一个执行语句 在根据变量值进行判断
func ifDemo2(){
if score :=65;score >=90 {
fmt.Println(score)
}
}
二, for(循环结构) go所有循环都可在for 不像php 有foreach
for 初始语句;条件表达式;结束语句 {
}
条件表达式为false 结束循环
func forDemo1(
for i:=1;i<10;i++{
fmt.Println(i)
}
)
for循环的初始语句可以省略 但是 ; 不能省
func demoFor2(){
i:=0
for ;i<100;i++ {
fmt.Println(i)
}
}
or循环的初始语句和结束语句一起省略
func forDemo3(){
i := 10
for i< 100{
fmt.Println(i)
}
}
无限循环
for {
语句
}
for循环 可以通过 break goto return panic 退出循环
三, for range (键值循环)
go 可以使用此 遍历 数组 切片 字符串 map channel(通道)
1 数组 切片 字符串 返回值和索引
2 map 返回键和值
3 channel 只返回通道内的值
四 switch case
func switchDemo(){
a:=3
switch a {
case 1:
fmt.Println(a)
case 2 :
fmt.Println("b")
default:
fmt.Println("default")
}
}
//一个分支可以有多个值
func switchDemo2(){
switch n:=5;n{
case 2,3,6:
fmt.Println("偶数")
case 1,5:
fmt.Println("偶数")
default:
}
}
//分支还可以使用表达式 fallthrough 语法可以满足条件的case 执行下个case
func deomo(){
age :=20
switch {
case age >10:
fmt.Println("10")
fallsthrough
case age <10://这个case会执行
}
}
五, goto 跳转到指定标签
func demo(){
var breakFlag bool
for i:=0;i< 10;i++{
for j:=0;j<10;j++{
if j ==2 {
breakFlag = true
break
}
}
if breakFlag {
break
}
}
}
使用goto简化
func demoGoto(){
for i:=0;i<10;i++{
for j:=0;j<10;j++{
if j == 2{
goto breakTag
}
}
return
//标签
breakTag:
}
}
六 break
breakDemo:
break breakDemo //语句添加标签 表示退出某个标签对于的代码块
七 continue 继续下次循环
在continue 加标签 表示开始标签对应的循环
forloop1:
continue forloop1