Go语言每天必学之switch语句

作者:lijiao 时间:2024-04-26 17:33:59 

Go 语言 switch 语句

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。。
switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break

语法

Go 编程语言中 switch 语句的语法如下:


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

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。

您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。

流程图:

Go语言每天必学之switch语句

实例


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

Type Switch

switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。
Type Switch 语法格式如下:


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

实例


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("未知型")  
 }  
}

以上代码执行结果为:

x 的类型 :<nil>

来源:http://www.runoob.com/go/go-switch-statement.html

标签:Go,switch
0
投稿

猜你喜欢

  • 学以致用驳ASP低能论

    2007-08-22 14:47:00
  • 使用python遍历指定城市的一周气温

    2022-01-01 18:25:26
  • AngularJS框架的ng-app指令与自动加载实现方法分析

    2024-05-02 17:40:17
  • Python-接口开发入门解析

    2022-05-24 09:19:43
  • PHP常量及变量区别原理详解

    2023-09-05 06:35:45
  • Django1.7+python 2.78+pycharm配置mysql数据库教程

    2023-11-04 14:43:28
  • javascript 动态插入技术

    2009-12-14 20:50:00
  • pandas如何处理缺失值

    2021-04-10 12:42:35
  • pytorch DataLoader的num_workers参数与设置大小详解

    2022-12-22 12:15:58
  • asp如何调用DLL来加快服务器的执行速度?

    2009-11-15 20:07:00
  • vue移动端实现手指滑动效果

    2023-07-02 16:48:49
  • 引用其它js时如何同时处理多个window.onload事件

    2024-04-16 10:31:47
  • SQL开窗函数的具体实现详解

    2024-01-26 12:16:37
  • SQL Server如何保证可空字段中非空值唯一

    2024-01-17 07:19:03
  • 教你制作IBM LOGO的方法

    2007-10-23 13:34:00
  • python使用pyaudio录音和格式转化方式

    2023-11-07 19:30:03
  • ansible作为python模块库使用的方法实例

    2022-07-15 08:01:02
  • Python3读取和写入excel表格数据的示例代码

    2022-01-21 10:33:55
  • Django rest framework基本介绍与代码示例

    2023-12-20 13:37:57
  • 正则表达式30分钟入门教程

    2007-08-27 10:38:00
  • asp之家 网络编程 m.aspxhome.com