zoukankan      html  css  js  c++  java
  • go流程控制

    if

    • Go里面if条件判断语句中不需要括号,条件判断语句里面允许声明一个变量,任何在这里声明的变量都可以在所有的条件分支中使用。

      if x := 11; x > 10 {
        fmt.Println("x is greater than 10")
      } else {
        fmt.Println("x is less than 10")
      }
      

    goto

    • 用goto跳转到必须在当前函数内定义的标签,标签名是大小写敏感的。

      func myFunc() {
        i := 0
        Here:   //这行的第一个词,以冒号结束作为标签
        println(i)
        i++
        goto Here   //跳转到Here去
      }
      

    for

    • for是go中的唯一的循环结构,在go里面有以下几种使用形式

      //经典的初始化/条件/后续形式的for循环
      for expression1; expression2; expression3 {}
      
      //带单个循环条件,即忽略expression1和expression3:
      sum := 1
      for ; sum < 1000;  {
      	sum += sum
      }
      
      //其中;也可以省略,那么就变成如下的代码了,这就是while的功能。
      for sum < 1000 {}
      
      //不带条件的for循环将一直执行,直到在循环体内使用了break或者return来跳出循环    
      for {
        fmt.Println("loop")
        break
      }
      

    break和continue

    • 当嵌套过深的时候,break可以配合标签使用,即跳转至标签所指定的位置,break和continue还可以跟着标号,用来跳到多重循环中的外层循环

    for配合range可以用于读取slice,map和数组的数据

    • range 在数组和 slice 中都同样提供每个项的索引和值。我们不需要索引的时候使用空值定义符_ 来忽略它,因为对于“声明而未被调用”的变量, 编译器会报错。有时候我们需要这个索引。

    • range在map中迭代键值对

    switch

    switch sExpr {
      case expr1:
      some instructions
      
      case expr2:
      some other instructions
     
      default:
      other code
    }
    
    switch i {
      case 2, 3, 4://我们把很多值聚合在了一个case里面
      fmt.Println("i is equal to 2, 3 or 4")
      default:
      fmt.Println("All I know is that i is an integer")
    }
    
    //而如果switch没有表达式,它会匹配true
    //不带表达式的switch是if/else的另一种方式
    switch {
      case t.Hour() < 12:
      fmt.Println("it's before noon")
      
      default:
      fmt.Println("it's after noon")
    }
    
    //Go里面switch默认相当于每个case最后带有break,
    //匹配成功后不会自动向下执行其他case,而是跳出整个switch, 
    //但是可以使用fallthrough强制执行后面的case代码。**
    
    integer := 6
    switch integer {
      case 6:
      fmt.Println("The integer was <= 6")
      fallthrough
      
      default:
      fmt.Println("default case")
    }
    //输出
    //The integer was <= 6
    //default case
    
  • 相关阅读:
    马拉车算法
    E. You 题解(思维)
    马拉车练习2
    The Boomsday Project 题解(玄学dp)
    Journey to Un'Goro 题解(思维+剪枝搜索)
    Black and white 题解(思维+prim)
    Rise in Price 题解(dp+随机数据)
    高斯消元
    马拉车练习1
    概率期望问题
  • 原文地址:https://www.cnblogs.com/jiangxiangxiang/p/10917676.html
Copyright © 2011-2022 走看看