我的Go+语言初体验——(5)Go+ 基本语法之 Switch

我的Go+语言初体验——(5)Go+ 基本语法之 Switch

“我的Go+语言初体验” | 征文活动进行中…

Go+ 语言中提供多路分支条件语句 switch, 用于在不同条件下执行不同动作。
使用 if-else 嵌套结构也可以实现多路分支条件结构,但程序冗长,可读性差。
本文的例程按照 Go+ 进行了优化和测试,Go+ 的编程风格更加简洁。


1. Switch 语法:基本语法

switch 是多路分支条件语句, 用于基于不同条件执行不同动作。

使用 if-else 嵌套结构也可以实现多路分支条件结构,但程序冗长,可读性差。Go+ 提供了更简练的 Switch 多路分支条件语句,将一个表达式的求值结果与可能的值的列表进行匹配,并根据匹配结果执行相应的代码。

switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break。

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

switch var {case var1:statement(s);case var2:statement(s);// 可以定义任意个数的 casedefault: // Optionalstatement(s);
}

变量 var 可以是任何类型,var1, var2 可以是与 var 相同类型的常量、变量或表达式。

switch 语句中可以有表达式,也可以省略。如果 switch 语句中没有表达式,则默认为 “true”,并对每个 case 表达式求值,执行结果为 “true” 的 case。


2. 【例程1】switch 有表达式

// Example 1: a switch statement with expression
dayOfTheWeek := 0
switch dayOfTheWeek {
case 1:println "Monday"
case 2:println "Tuesday"
case 3:println "Wednesday"
case 4:println "Thursday"
case 5:println "Friday"
case 6:println "Saturday"
case 0:println "Sunday"
}/* Running results:
Sunday
*/

3. 【例程2】switch 无表达式

// Example 2: a switch statement without expression
var num int = 80switch { //switch without expression
case num < 50:printf "%d < 50\n", num
case num < 100:printf "%d < 100\n", num
case num < 200:printf "%d < 200", num
}/* Running results:
80 < 100
*/

程序说明:

  1. switch 语句中没有表达式,则默认为 “true”。对每个 case 表达式求值,执行结果为 “true” 的 case。
  2. case 后面可以是常量,也可以是表达式,对 case 表达式求值,根据表达式的结果为 “true” 或 “false” 与 switch 进行匹配。


4. 【例程3】default case

在 Switch 语句中,关键字 default 表示:当没有其他 case 匹配时,将执行 default 语句。

显然,多个 case 和 default 只能执行一个。

// Example 3: a switch example with default case
// When no other case matches, the default statement is executed.
dayOfTheWeek := 2
switch dayOfTheWeek {
case 0:println "Today is Sunday."
case 6:println "Today is Saturday."
default:println "Today is a weekday."
}/* Running results:
Today is a weekday.
*/

程序说明:

dayOfTheWeek := 2,与 switch 中的 case 0,case 6 都不匹配,执行 default 语句。



5. 【例程4】fallthrough

在 Go+ 语言中 case 是一个独立的代码块,默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case。

为了兼容一些移植代码,如果需要执行后面的 case,可以使用关键字 fallthrough 来实现这一功能。

fallthrough 必须是 case 语句块中的最后一条语句。如果它出现在语句块的中间,编译器将会报错。

新编写的代码,不建议使用 fallthrough。

// Example 4: a switch example with fallthrough
var num int = 80println "Switch with fallthrough:"
switch {
case num < 50:printf "%d < 50\n", numfallthrough
case num < 100:printf "%d < 100\n", numfallthrough
case num < 200:printf "%d < 200", num
}/* Running results:
Switch with fallthrough:
80 < 100
80 < 200
*/

程序说明:

  1. 【例程4】与【例程2】的区别是 case 语句中的 “fallthrough”。【例程2】 case 语句中没有 “fallthrough”,程序依次对 case 表达式求值,直到找到匹配项,只要找到匹配项就跳出 switch 语句,而不再执行下一条 case。【例程4】 case 语句中带有 “fallthrough”,找到匹配项后并不会跳出 switch 语句,继续执行下一条 case。
  2. 如果 switch 没有表达式则按 “true” 进行匹配。
  3. case 中的表达式不必是常量,也可以在运行时被求值。


6. 【例程5】多条件匹配

在 Go+ 语言中,一个 case 分支中可以包含多个值或多个表达式,每个条件之间用逗号分隔。

多个值或表达式之间相当于 “与” 的关系,只要匹配其中的一个条件,就执行该 case 的语句。

// Example 5: a switch example of multiple expressions in case
var letter string = "u"switch letter {
case "a", "e", "i", "o", "u":printf "%s is a vowel.", letter
default:printf "%s isn't a vowel.", letter
}/* Running results:
u is a vowel.
*/

【本节完】


版权声明:

原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/121722748)

Copyright 2021 youcans, XUPT

Crated:2021-12-04


欢迎关注『我的Go+语言初体验』系列,持续更新中…

我的Go+语言初体验——(1)超详细安装教程
我的Go+语言初体验——(2) IDE 详细安装教程
我的Go+语言初体验——(3)Go+ 数据类型
我的Go+语言初体验——(4)零基础学习 Go+ 爬虫
我的Go+语言初体验——(5)Go+ 基本语法之 Switch

“我的Go+语言初体验” | 征文活动进行中…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java web 开发之写在前面(0)

java是sun公司&#xff08;现在属于Oracle公司&#xff09;推出的能够跨越多平台的、可以执行最高的一种面向对象的编程语言&#xff0c;也是目前最先进、特征最丰富、功能最强大的计算机语言。利用java可以编写桌面应用程序&#xff0c;web应用程序、分布式系统、嵌入式系统程…

【OpenCV 例程200篇】52. 图像的相关与卷积运算

【OpenCV 例程200篇】52. 图像的相关与卷积运算 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 滤波通常是指对图像中特定频率的分量进行过滤或抑制。图像滤波是在尽可能保留图像细节特征的条件…

java web 之 网页前端开发基础(1)

1.HTML&#xff08;Hypertext Markup Language&#xff0c;HTML&#xff0c;超文本标记语言&#xff09; 1.1 创建第一个HTML文件 编写html语言可以通过两种方式&#xff0c;一种是手工编写html代码&#xff0c;一种是借助一些开发软件&#xff0c;如Dreamweaver或者微软公司…

文本框为空按钮不可点击

在form表单的提交中判断输入框的内容是否为空&#xff0c;如果输入框的内容为空则按钮不可点击&#xff0c;只有当输入框的内容不为空时才能点击并执行之后的提交等操作。 效果图演示 输入框为空&#xff08;按钮不可点击&#xff0c;点击无效果&#xff09; 输入框不为空时…

【youcans 的 OpenCV 学习课】7. 空间域图像滤波

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】7. 空间域图像滤波 图像滤波是在尽可能保留图像细节特征的条件下对目标图像的噪声进行抑制&#xff0c;是常用的图像预处理操作。 …

java web开发之上机指导(2)

创建一个用户注册的页面&#xff0c;让用户输入姓名、密码、电话和邮箱&#xff0c;使用javascript脚本完成密码校验、电话号码校验、邮箱校验和空格内容校验。 开发步骤如下。 &#xff08;1&#xff09;创建一个项目名为CheckInfomation&#xff0c;在WebContent文件夹下创…

小程序开发之基础知识(0)

前言&#xff1a;2016年9月21日,微信小程序正式开启内测。 2017年1月9日0点,万众瞩目的微信第一批小程序正式上线,用户可以体验到各种各样小程序提供的服务。 人类发展史大抵经历了石器时代&#xff0c;青铜器与铁器时代、工业与科技时代&#xff08;从第一次工业革命算起&…

鼠标悬浮改变背景颜色

将鼠标放在div上时div的背景颜色发生改变&#xff0c;把鼠标移走div之后&#xff0c;div的背景颜色回复原来的颜色。 效果图演示 没有将鼠标放在div上时&#xff08;lanse&#xff09; 将鼠标放在div上之后&#xff08;变为红色&#xff09; 下面看代码 由于代码较短&…

我的Go+语言初体验——(6)整型有理数数据类型

我的Go语言初体验——&#xff08;6&#xff09;整型有理数数据类型 “我的Go语言初体验” | 征文活动进行中… Go 语言使用后缀 ‘r’ 表示有理数&#xff0c;支持整型、分数型、浮点型三种有理数数据类型&#xff08;Rational number&#xff09;。 在整型有理数变量声明时&…

利用python进行数据分析之准备工作(1)

目录 一、简介 二、重要的python库 1.numpy库 2.pandas 3.matplotlib 4.IPython 5.Scipy 三、python环境安装和数据分析前的数据准备 一、简介 什么是数据&#xff1f;本栏目的数据主要指的是结构化的数据&#xff0c;通常我们使用数据这一说法来笼统地概括所有通用格式…

获取焦点改变输入框背景色

当输入框获取焦点时&#xff08;鼠标点到输入框时&#xff09;为红色&#xff0c;失去焦点时还原&#xff08;鼠标未点输入框内&#xff09;为白色。 效果图演示 没有获取焦点 获取焦点 代码演示 <!DOCTYPE html> <html><head lang"en"><…

【OpenCV 例程200篇】53. Scipy 实现图像二维卷积

【OpenCV 例程200篇】53. Scipy 实现图像二维卷积 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 滤波通常是指对图像中特定频率的分量进行过滤或抑制。图像滤波是在尽可能保留图像细节特征的条…

python基础课程1(看代码看注释)--基本操作和数据类型

python环境自行安装&#xff0c;建议安装3版本的环境。编辑器可以使用pycharm或者sublime&#xff0c;也可以在线上使用jupyterimport this #函数存在于模块中&#xff0c;我们需要先引用这个模块才能使用这个模块里的函数 print(hello,world)#单引号 print("hello,world&…

点击按钮切换图片

点击按钮时将当前显示的图片切换为指定要显示的图片 效果图演示 未点击更换图片之前显示的图片 点击更换图片之后 程序详解&#xff1a; 准备两张互相切换的图片给更换图片按钮添加点击事件把两张图片放在一个数组里点击按钮后执行判断如果是第一张图片就换成第二张&#…

【OpenCV 例程200篇】54. OpenCV 实现图像二维卷积

【OpenCV 例程200篇】54. OpenCV 实现图像二维卷积 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 滤波通常是指对图像中特定频率的分量进行过滤或抑制。图像滤波是在尽可能保留图像细节特征的…

python基础课程2(看代码看注释)--条件判断|循环|函数|生成器|类

##人生苦短&#xff0c;我用python ##课程内容 #条件判断 #循环 #类&#xff1a;简单介绍类的用法##条件判断 #if condiction:# dosomething #else: # dosomething total_cost 32.5 if total_cost>30:discount 0.9 elif total_cost>20:diacount 0.95 else :disco…

【OpenCV 例程200篇】55. 可分离卷积核

【OpenCV 例程200篇】55. 可分离卷积核 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 空间滤波器是由邻域和定义的操作构成的&#xff0c;滤波器规定了滤波时采用的邻域形状及该区域内像素值的…

Anaconda 安装 Python 库(MySQLdb)的方法

转载自&#xff1a;苏皖静儿 [已解决]Anaconda 安装 Python 库&#xff08;MySQLdb&#xff09;的方法 zoerywzhou163.com http://www.cnblogs.com/swje/ 作者&#xff1a;Zhouwan 2017-12-4 安装python库的过程中&#xff0c;最重要的地方就是版本需要兼容。其中操作系统为…

获取数据库内容放入下拉框中

获取数据库里的数据放入下拉框中&#xff0c;使下拉框显示的内容是数据库里的内容 功能分析&#xff1a; 设计并实现数据库插入相关数据在登陆页面点击注册按钮时跳到Servlet中在Servlet中连接数据库查询内容放入session中传给jsp页面在jsp页面接受session内容并使用for循环输…

【OpenCV 例程200篇】56. 低通盒式滤波器

【OpenCV 例程200篇】56. 低通盒式滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 图像滤波是在尽可能保留图像细节特征的条件下对目标图像的噪声进行抑制&#xff0c;是常用的图像预处理…