zoukankan      html  css  js  c++  java
  • GoLang学习控制语句之switch

    基本结构

    相比较 C 和 Java 等其它语言而言,Go 语言中的 switch 结构使用上更加灵活。它接受任意形式的表达式,例如:

    switch var1 {
        case val1:
            ...
        case val2:
            ...
        default:
            ...
    }
    

    变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。前花括号{必须和 switch 关键字在同一行。 您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。一旦成功地匹配到每个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说你不需要特别使用 break 语句来表示结束。

    Go语言里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch。

    含初始化语句的switch

    switch 语句的另外一种形式是包含初始化的语句,例如:

    switch initialization {
        case val1:
            ...
        case val2:
            ...
        default:
            ...
    }
    

    这种形式可以非常优雅地进行条件判断:

    switch result := calculate(); {
        case result < 0:
            ...
        case result > 0:
            ...
        default:
            // 0
    }
    

    fallthrough关键字

    switch语句中,如果在执行完每个分支的代码后,还希望继续执行后续分支的代码,可以使用fallthrough关键字来达到目的。例如:

    package main
    
    import(
      "fmt"
    )
    
    func main() {
      i :=2
      switch i {
          case 0:
              fmt.Printf("0")
          case 1:
              fmt.Printf("1")
          case 2:
              fallthrough  //fallthrough会强制执行后面的case代码
          case 3:
              fmt.Printf("3")
          default:
              fmt.Printf("Default")
      }
    }
    

    以上代码在 i=0时输出0,i=1时输出1,i=2时输出3,i=3时输出3,其他时候便输出Default。

  • 相关阅读:
    怎样让一个div高度自适应浏览器高度
    angular change the url , prevent reloading
    论习惯的重要性
    php的几个内置的函数
    cakephp 2.0 源码解读(一)
    svn switch 的用法
    浏览器兼容问题 及 解决方案 (一)
    浏览器兼容问题 及 解决方案 (二)
    promise 承诺
    ng-selected 与ng-options的使用
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8869544.html
Copyright © 2011-2022 走看看