流程控制

目录

常见的语言中,都有命令分支结构,我们今天依次看看Go语言的流程控制。

if…else…

这是最常见的流程控制,Go语言的 if...else... 与其他语言并没有什么太大的不同,唯一需要注意的地方是它不需要括号:

if x > 1 {
    fmt.Println("x > 1")
}

switch…case…

Go语言中的 switch...case... 与C语言非常像,不同的地方在于,每一条case语句默认是带了 break 的,也就是说,当前的 case 执行完成之后,整个 switch 就会退出:

switch x {
    case x == 1:
        fmt.Println("x == 1")
    case x == 2:
        fmt.Println("x == 2")
    default:
        fmt.Println("x != 1 && x != 2")
}

default 分支就是用于所有 case 都没有匹配时执行的,我们可以不提供 default 分支。

for

Go语言的 for 循环也是循规蹈矩,唯一需要注意的地方在于没有括号:

for i := 0; i < 10; i++ {
    fmt.Println(i)
}

注意,Go语言里没有while,也没有 do…while…

continue和break

continuebreak 就是用于控制 for 循环的,例如:

for {
    if x == 1 {
        break
    }

    if x == 2 {
        continue
    }
}

goto

一般我们不用 goto。Go语言里的 goto 与C语言的一致,我们需要提供一个标签,所以我们也可以用 goto 写一个死循环:

loop:
    goto loop

它与下面这样是等效的:

for {

}


更多文章
  • 为什么要使用gRPC?
  • Matebook X Pro 2019安装Debian 10
  • ArchLinux忽略某个包的升级
  • SQLAlchemy使用主从与数据库autocommit
  • Blackbox禁用IPv6
  • 预防缓存击穿
  • Go 1.13的errors挺香
  • flutter开发体验汇报
  • 自己封装一个好用的Dart HTTP库
  • Flutter应用启动后检查更新
  • Grafana Gravatar头像显示bug修复
  • flutter中使用RESTful接口
  • Vim YouCompleteMe使用LSP(以dart为例)
  • flutter webview加载时显示进度
  • SQLAlchemy快速更新或插入对象