Go语言学习笔记——流程控制

分支

if语句

  一般用法与C语言类似,但是判断表达式不用加括号

var a int
if a < 4 {
   a++
} else if a == 4 {
   a--
} else {
   a *= 2
}
特殊写法

  在判断条件表达式前,可以加额外的语句

if b := a * 2; b < 10{
   fmt.Println(b)
}

  这样写的好处是对于块作用域,变量作用的范围更小

switch语句

  在Go中,switch case语句的条件比C更加灵活方便,case值不局限于整数

var a int
switch a{
case 2:
   fmt.Println(a)
case 3, 4, 5, 6, 7:
   fmt.Println(a)
default:
   fmt.Println(a)
}

  Go中不需要用break说明一个分支结束,如果多个分支使用同一处理,可以写在一个表达式中

  还可以将多个if else的结构写成swich语句

var a int
switch {
case a < 10:
   fmt.Println(a)
case a > 10 && a < 20, a > 50 && a < 60:
   fmt.Println(a)
default:
   fmt.Println(a)
}

循环

for循环

  Go中没有while关键字,只有for

  几种常用写法

var a int
//死循环
for {
   a++
}
//判断条件循环
for a < 10 {
   fmt.Println(a)
}
//固定次数循环
for i := 0; i < 10; i++ {
   fmt.Println(i)
}

  breakcontinue关键字功能与其他语言相同

  gotoreturnpanic语句也可以推出循环

for range循环

  对可迭代数据的循环,类似于C++的for( : ),Python的for in

遍历切片、数组、字符串

  单个左值是索引,两个左值分别是索引和值

for index, value := range s {
   fmt.Println(index, value)
}
遍历map

  单个左值是key,两个分别是key和value

var m = map[string]int{
   "hello": 123,
   "world": 321,
}
for key := range m {
   fmt.Println(key)
}
for key, value := range m {
   fmt.Println(key, value)
}
遍历通道
c := make(chan int)
for msg := range c{
   fmt.Println(msg)
}

  从通道中不断获取数据

跳转

  使用标签标记代码块,再配合使用gotobreakcontinue进行跳转

break label
loop:
   for {
      for{
         break loop
      }
      fmt.Println("outer loop")
   }
   fmt.Println("outside")
//结果只打印 outside

  使用break label,直接跳出两层循环

continue label
loop:
   for {
      fmt.Println("outer loop")
      for{
         continue loop
      }
   }
//结果一直打印 outer loop

  使用continue label,回到外层循环开头

  break和continue后面接label只能接定义在forswitchselect代码块前一行的lebel

goto label

  goto是无条件跳转,可以跳转到任意label,高级语言中不推荐使用

	 for {
      for {
         goto exit
      }
   }
exit:
   fmt.Println("outside")

参考资料

《Go语言从入门到进阶实战》第四章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值