Go 语言学习手札 ━━ 流程控制

一、条件语句(if – else)

在 Go 语言中,if - else 与大部分编程语言一样

二、选择语句 (switch)

同样,switch 语句与其他编程语言也是一直,不同的是,Go 语言中,在每个 case 结束时可以不写 break

select 语句

select 语句类似于 switch 语句,但是 select 会随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。

select 语句需要配合 channel 使用,否则没有意义

  • 每个 case 都必须是一个通信
  • 所有 channel 表达式都会被求值
  • 所有被发送的表达式都会被求值
  • 如果任意某个通信可以进行,它就执行,其他被忽略。
  • 如果有多个 case 都可以运行,Select 会随机公平地选出一个执行。其他不会执行。 否则:
    • 如果有 default 子句,则执行该语句。
    • 如果没有 default 子句,select 将阻塞,直到某个通信可以运行;Go 不会重新对 channel 或值进行求值。

三、循环语句(for)

Go 语言中,目前只存在 for 循环,如果需要遍历一个数组,需要配合 range 使用。例:

package main

import "fmt"

func main() {
   a := []string{"A", "B", "C", "D"}
   for key, value := range a {
       fmt.Print(key, "\n")
       fmt.Print(value, "\n")
   }
}

如果在遍历中,不需要 key,可以这么写:

package main

import "fmt"

func main() {
   a := []string{"A", "B", "C", "D"}
   for _, value := range a {
       fmt.Print(value, "\n")
   }
}

因为在 Go 中不允许存在未使用的变量,如果程序中不需要 key,那么可以将 key 的值给 __ 表示在接下来的程序中不再使用这个值

四、其他

  • break:经常用于中断当前 for 循环或跳出 switch 语句
  • continue:跳过当前循环的剩余语句,然后继续进行下一轮循环。
  • goto:将控制转移到被标记的语句。
标签:

About: Mr.zhang

成谜于写 bug 无法自拔~


发表评论

邮箱地址不会被公开。 必填项已用*标注