流程语句

流程语句

1. 条件语句

//在if之后条件语句之前可以添加变量初始化语句,用;号隔离
if <条件语句> {    //条件语句不需要用括号括起来,花括号必须存在
  //语句体
}else{
  //语句体
}

//在有返回值的函数中,不允许将最后的return语句放在if...else...的结构中,否则会编译失败
//例如以下为错误范例
func example(x int) int{
  if x==0{
    return 5
  }else{
    return x  //最后的return语句放在if-else结构中,所以编译失败
  }
}

2. 选择语句

//1、根据条件不同,对应不同的执行体
switch i{
  case 0:
  	fmt.Printf("0")
  case 1:                //满足条件就会退出,只有添加fallthrough才会继续执行下一个case语句
  	fmt.Prinntf("1")
  case 2,3,1:            //单个case可以出现多个选项
  	fmt.Printf("2,3,1")
  default:               //当都不满足以上条件时,执行default语句
  	fmt.Printf("Default")
}

//2、该模式等价于多个if-else的功能
switch {
  case <条件表达式1>:
  	语句体1
  case <条件表达式2>:
  	语句体2
}

3. 循环语句

//1、Go只支持for关键字,不支持while,do-while结构
for i,j:=0,1;i<10;i++{    //支持多个赋值
  //语句体
}

//2、无限循环
sum:=1
for{  //不接条件表达式表示无限循环
  sum++
  if sum > 100{
    break   //满足条件跳出循环
  }
}

//3、支持continue和break,break可以指定中断哪个循环,break JLoop(标签)
for j:=0;j<5;j++{
  for i:=0;i<10;i++{
    if i>5{
      break JLoop   //终止JLoop标签处的外层循环
  }
  fmt.Println(i)
}
JLoop:    //标签处
...

4. 跳转语句

//关键字goto支持跳转
func myfunc(){
  i:=0
  HERE:           //定义标签处
  fmt.Println(i)
  i++
  if i<10{
    goto HERE     //跳转到标签处
  }
}

最后修改 May 10, 2023: add code (7f583d9)