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

文章目录

    • 分支
      • if语句
        • 特殊写法
      • switch语句
    • 循环
      • for循环
      • for range循环
        • 遍历切片、数组、字符串
        • 遍历map
        • 遍历通道
    • 跳转
        • break label
        • continue label
        • goto label
    • 参考资料

分支

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语言从入门到进阶实战》第四章

你可能感兴趣的:(#,Go学习)