关于golang:Go-语言学习之流程控制

4次阅读

共计 2245 个字符,预计需要花费 6 分钟才能阅读完成。

01 if…else… 规范应用

在 Go 语言中,if…else… 语句的条件表达式必须是布尔类型,能够省略小括号,并且左大括号不能另起一行。通过代码,咱们演示 if…else… 的规范应用办法。

func main() {
  x := 1
  if x >= 5 {fmt.Println("x >= 5")
  } else if x < 5 && x > 0 {fmt.Println("x < 5 && x > 0")
  } else {fmt.Println("x <= 0")
  }
}

02 if…else… 非凡应用

if…else… 语句区别于其它语言,它在条件表达式中,反对初始化语句,能够定义局部变量(一个或多个)或执行初始化函数。其中,局部变量的无效范畴蕴含整个 if…else… 块。通过代码,咱们演示 if…else… 在条件表达式中初始化语句的应用办法。

func main() {
  if a, b := x+1, x+10; a < b {fmt.Println("a < b")
  } else {fmt.Println("a >= b")
  }
}

if…else… 语句须要留神的是,条件的匹配程序要想好,避免出现死代码,即永远不会执行的代码;尽量减少代码块嵌套,放弃代码块性能的单一性,让失常逻辑处于雷同档次,针对简单的组合条件,能够将其封装为函数,晋升代码的可维护性。

03 switch 规范应用

switch 语句和 if 语句相似,也用于抉择执行,在 Go 语言中,switch 语句不同于其余语言中的 switch 语句,匹配到 case 块后,不须要显式执行 break 语句,程序主动不会继续执行下个 case 块,如果须要程序继续执行匹配 case 块的下一个 case 块,能够在 case 块的结尾执行 fallthrough,然而不会再匹配 case 块的条件表达式。如果想要阻止 fallthrough,能够显式执行 break 语句。在一个 case 块存在多个匹配条件时,命中其中一个条件即可,相似逻辑运算符“或”,通过代码,咱们演示 switch 在 Go 语言中的应用办法。

func main() {
  a, b, c, x := 2, 3, 4, 2
  switch x {
  case a, b:
    println("x == a || x == b")
    fallthrough
  case c:
    println("x == c")
  case 3:
    println("x == 3")
  default:
    println("x 不合乎任何 case 条件")
  }
}

04 switch 非凡应用

switch 语句同 if 语句相似,同样反对初始化语句,按从上到下,从左到有的程序匹配 case 执行,只有全副 case 块匹配失败时,才会执行 default 块。通过代码,咱们演示 switch 语句非凡应用办法。

func main() {
  switch y := 5; {
  case y > 5:
    fmt.Println("y > 5")
  case y > 0 && y <= 5:
    println("y > 0 && y <= 5")
  default:
    println("y =", y)
  }
}

对于 Switch 语句,在 Go 语言中还有两点须要留神的,一是相邻的空 case 不形成多条件匹配,二是不能呈现反复的 case 常量值。

05 for 规范应用

在 Go 语言中,仅有 for 一种循环语句,然而能够模仿 while (condition) {} 和 while (true) {},须要留神的是,初始化语句仅被执行一次。通过代码,咱们演示在 Go 语言中,for 循环的应用办法。

func main() {
  for i := 0; i < 5; i++ {println("i =", i)
  }
}

06 for 模仿 while (condition) {}

func main() {
  j := 0
  for j < 5 {
    j++
    fmt.Println("j =", j)
  }
}

07 for 模仿 while (true) {}

func main() {
  for {
    k++
    if k == 2 {continue}
    if k > 5 {break}
    fmt.Println("k =", k)
  }
}

08 for range 遍历

在 Go 语言中,遍历数据除了应用 for 规范应用模式之外,还能够应用 for…range 遍历数据,反对的数据类型有字符串、数组、数组指针、slice、map、channel,返回索引、键值数据。目前为止,上述类型中,咱们仅介绍过字符串类型,对于其余几种类型,咱们后续再介绍。通过代码,咱们演示应用 for…range 遍历字符串返回 unicode 的用法。

func main() {
  str := "hello"
  for index := range str {fmt.Println(str[index])
  }
}

09 continue 和 break

在 for 循环中,continue 和 break 别离能够用来跳出本次循环和完结循环,其中,continue 只用于 for 循环,而 break 还能够用于 03 介绍的 switch 语句中,和后续咱们会介绍的 select 语句。continue 和 break 的应用办法,同第 07 的 for 语句模仿 while(true) 代码演示。

10 goto

在 Go 语言中,应用 goto 实现定点跳转,尽管行业中对于 goto 的褒贬不一,但实际上,有些场景应用 goto,能够让代码更优雅。应用 goto 前,咱们须要先定义标签,标签辨别大小写,并且如果未应用定义的标签会引发编译谬误。须要留神的是,goto 不能跳转到其余函数或内层代码块中。通过代码,咱们演示 goto 的用法。

func main() {
  l := 0
  for l < 10 {
  start:
    l++
    if l < 5 {goto start}
    fmt.Println("l =", l)
  }
}

Go 语言基础知识

正文完
 0