03-switch语句

@

1. 基本使用

1) 语法

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

说明: case 条件: 执行命令

2) 示例

package main

import "fmt"

func main() {
   var grade string = "B"
   var marks int = 90

   switch marks {
      case 90: grade = "A"
      case 80: grade = "B"
      case 50,60,70 : grade = "C"
      default: grade = "D"  
   }

   switch {
      case grade == "A" :
         fmt.Printf("优秀!\n" )     
      case grade == "B", grade == "C" :
         fmt.Printf("良好\n" )      
      case grade == "D" :
         fmt.Printf("及格\n" )      
      case grade == "F":
         fmt.Printf("不及格\n" )
      default:
         fmt.Printf("差\n" );
   }
   fmt.Printf("你的等级是 %s\n", grade );      
}

输出

优秀!
你的等级是 A

2. Type Switch

1)语法

switch x.(type){
    case type:
       statement(s);      
    case type:
       statement(s); 
    /* 你可以定义任意个数的case */
    default: /* 可选 */
       statement(s);
}

2)示例:

package main
import "fmt"

func main() {
   var x interface{}
     
   switch i := x.(type) {
      case nil:   
         fmt.Printf(" x 的类型 :%T",i) 
      case int:   
         fmt.Printf("x 是 int 型") 
      case float64:
         fmt.Printf("x 是 float64 型") 
      case func(int) float64:
         fmt.Printf("x 是 func(int) 型") 
      case bool, string:
         fmt.Printf("x 是 bool 或 string 型" ) 
      default:
         fmt.Printf("未知型") 
   }   
}

说明:interface{}为接口类型

输出结果

x 的类型 :<nil>

3. fallthrough

说明:使用 fallthrough 会强制执行后面的 case 语句(即,fallthrough 不会判断下一条 case 的表达式结果是否为 true)

【示例】

  • 代码
package main

import "fmt"

func main() {

    switch {
    case false:
            fmt.Println("1、case 条件语句为 false")
            fallthrough
    case true:
            fmt.Println("2、case 条件语句为 true")
            fallthrough
    case false:
            fmt.Println("3、case 条件语句为 false")
            fallthrough
    case true:
            fmt.Println("4、case 条件语句为 true")
    case false:
            fmt.Println("5、case 条件语句为 false")
            fallthrough
    default:
            fmt.Println("6、默认 case")
    }
}

  • 输出
2、case 条件语句为 true
3、case 条件语句为 false
4、case 条件语句为 true

说明:false不会打印,true会打印,falthrough后边不管是什么都被打印


posted on 2021-11-16 21:51  运维开发玄德公  阅读(6)  评论(0编辑  收藏  举报  来源

导航