设为首页 加入收藏

TOP

go流程控制
2019-05-24 14:07:58 】 浏览:69
Tags:流程 控制

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
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇struct,interface,method 下一篇gin的url查询参数解析

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目