• 从零开始学Go之基本(四):流程控制语句


    Go中的流程控制语句有:if(else),for,switch

    if:(判断流程控制)

    关键字 if 是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号括起来的代码块,否则就忽略该代码块继续执行后续的代码(跟C不同,Go中的if不需要加括号)

    单个判断:

    if 判断条件 {
    ​
     执行代码块
    ​
    }

    如果要增加一个条件不满足时的情况,可以增加else以及后面的代码块,if 和 else 后的两个代码块是相互独立的分支,只能执行其中一个

    if 判断条件 {
    ​
     执行代码块1
    ​
    } else {
    ​
     执行代码块2
    ​
    }

    如果需要三个或三个以上的分支判断的情况,则要在中间else后再加if的判断的方式,三个情况只能执行一个

    if 判断条件1 {
    ​
     执行代码块1
    ​
    } else if 判断条件2 {
    ​
     执行代码块2
    ​
    } else {
    ​
     执行代码块3
    ​
    }

    if-else可以嵌套,else的匹配跟C一样是匹配最近大括号{}对应的if

    嵌套:

    if 判断条件1 {
    ​
      if 判断条件2 {
    ​
      执行代码块1
    ​
     }
    ​
    } else {//匹配判断条件1的if
    ​
     执行代码块2
    ​
    }

    在if执行判断前可以增加一个执行语句,用;号分隔执行语句和判断语句,会先执行执行语句后再执行判断语句

    特殊写法:

    if 执行语句;判断语句{
     执行代码块
    }

    在Go中有严格的格式控制,if跟对应左大括号{必须在同一行,右大括号}和else/else-if必须在同一行

    格式控制:

    if ten := 10; ten < 10 { //在同一行
     fmt.Print("<10")
    } else { //在同一行
     fmt.Print(">=10")
    }

     

    for:(循环流程控制)

    Go 只有一种循环结构:for 循环。

    基本的 for 循环由三部分组成,它们用分号隔开:

    • 初始化语句:在第一次迭代前执行
    • 条件表达式:在每次迭代前求值
    • 后置语句:在每次迭代的结尾执行

    初始化语句通常为一句短变量声明,该变量声明仅在 for`语句的作用域中可见,一旦条件表达式的布尔值为 false,循环迭代就会终止

    for 初始化语句;条件表达式;后置语句 {
    ​
     循环语句块
    ​
    }

    同if一样,可以省略最外层的小括号(),而且初始化语句和后置语句可以省略。

    在Go中没有while和do-while语句,而是通过没有分号的for来实现,在for中增加一个if判断以及break来充当原来while中的判断条件。

    for {//while
    
     if 退出判断条件 {
    
      break
    
     }
    
     循环语句
    
    }
    
    for {//do-while
    
     循环语句 
     
     if 退出判断条件 {    
     
     break  
      
     }
      
    }

    break:跳出当前循环,无视for条件约束;

    continue:跳过当次循环,仍然执行后置语句和判断条件表达式,如符合条件会继续执行for语句;

    标签定义:

    标签名:

    OneLoop://这行就是标签
    for {
    ​
     if 退出判断条件 {
    ​
      break
    ​
     }
    ​
    }

    goto、break、continue都可以配合标签来完成对特定循环的跳转、跳出、跳过。

    func main() {
     for x := 0; x < 10; x++ {
       for y := 0; y < 10; y++ {
         if y == 2 {
           // 跳转到标签
           goto breakHere
         }
       }
     }
     // 手动返回, 避免执行进入标签
     return
    breakHere:// 标签
     fmt.Println("done")
    }

     

    switch:(分支流程控制)

    switch相当于用来处理大量重复的if-else语句的代替语句。

    switch 表达式 {
    ​
     case 对表达式的判断:{
      语句
     }
    ​
    }

    判断i

     var i = 8
     switch i {
     case 8:
      {
       fmt.Println("=8")
       //fallthrough//输入后会继续运行下一个case
      }
     case -1,0://多个情况结果相同可以放在一起用,来分隔
      {
       fmt.Println("none")
      }
     default:
      {
       fmt.Println("!=8")
      }
     }

    ①其中default是可选的但是一个switch只能有一个,是用于对所有case都不符合的情况进行的处理。

    ②多个情况结果相同可以放在一起用,来分隔。

    ③当switch未声明表达式默认为true。

    跟C不同,Go的switch语句内置了break,各case之间独立,运行完即退出,如果需要继续按case运行则需要fallthrough关键字

  • 相关阅读:
    与生命晒跑
    关于你有一条未读短信的静态单页
    【微收藏】来自Twitter的自动文字补齐jQuery插件
    chrome 插件个人使用推介
    vscode中检测代码中的空白行并去除的方法
    FTP文件乱码导致的无法删除
    git操作遇到的几个问题
    一个srand、rand结果相同的问题
    【verilog】单周期MIPS CPU设计
    【verilog】多周期MIPS CPU设计
  • 原文地址:https://www.cnblogs.com/VingB2by/p/11073846.html
Copyright © 2020-2023  润新知