Go语言之分支结构(十一)
Go语言分支结构
一、程序的流程结构
程序的流程控制结构共有三种:顺序结构,选择结构,循环结构。
顺序结构:从上向下,逐行执行。
选择结构:条件满足,某些代码才会执行。0-1次
分支语句:if,switch,select循环结构:条件满足,某些代码会被反复的执行多次。0-N次
循环语句:for
二、条件语句
1.if语句
三种语法格式:
- 第一种:
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
}
- 第二种:
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
} else {/* 在布尔表达式为 false 时执行 */
}
- 第三种:
if 布尔表达式1 {/* 在布尔表达式1为 true 时执行 */
} else if 布尔表达式2{/* 在布尔表达式1为 false ,布尔表达式2为true时执行 */
} else{/* 在上面两个布尔表达式都为false时,执行*/
}
示例代码:
package mainimport "fmt"func main() {/* 定义局部变量 */var a int = 10/* 使用 if 语句判断布尔表达式 */if a < 20 {/* 如果条件为 true 则执行以下语句 */fmt.Printf("a 小于 20\n" )}fmt.Printf("a 的值为 : %d\n", a)
}
2.if变体语句
如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。
它的语法是:
if statement; condition { ...
}if condition{...
}
示例代码:
package mainimport ( "fmt"
)func main() { if num := 10; num % 2 == 0 { //checks if number is evenfmt.Println(num,"is even") } else {fmt.Println(num,"is odd")}
}需要注意的是: num的定义在if里,那么只能够在该if..else语句块中使用,否则编译器会报错的。
3.switch语句 ( 开关语句 )
什么是switch语句?
1.switch是一个条件语句,
它计算表达式并将其与可能匹配的列表进行比较,并根据匹配执行代码块。
2.switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。
3.switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。
4.而如果switch没有表达式,它会默认匹配true
5.Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。
6.变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。
7.您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。
switch var1 {case val1:...case val2:...case val3,val4:...default:...
}
switch语句的语法格式:
1.switch语法格式:switch 变量{case 数值1:分支1case 数值2:分支2...default:最后一个分支} 2.省略switch后的变量,相当于直接作用在true上switch{//truecase true:case false:}3.case后可以同时跟随多个数值switch 变量{case 数值1,数值2,数值3:case 数值4,数值5:}4.switch后可以多一条初始化语句switch 初始化语句;变量{}
示例代码:
package mainimport "fmt"func main() {/* 定义局部变量 */// 定义在main函数当中,是局部变量var grade string = "B"var marks int = 90switch marks {case 90: grade = "A"case 80: grade = "B"case 50,60,70 : grade = "C" //case 后可以由多个数值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 );
}
注意事项
switch可以作用在其他类型上,case后的数值必须和switch作用的变量类型一致
case是无序的
case后的数值是唯一的(duplicate case 3 in switch)
default语句是可选的操作
4.fallthrough
如需贯通后续的case,就添加fallthrough
解释:因为每个case自带break语句,所以如果在执行完一个case语句后,还想执行后面case的语句,就需要使用fallthrouth
示例代码:
package mainimport ("fmt"
)type data [2]intfunc main() {switch x := 5; x {default:fmt.Println(x)case 5:x += 10fmt.Println(x)fallthroughcase 6:x += 20fmt.Println(x)}
}执行结果:
15
35
注意事项:
switch的注意事项
- case后的常量值不能重复
- case后可以有多个常量值
- fallthrough应该是某个case的最后一行。如果它出现在中间的某个地方,编译器就会抛出错误。
5.Type Switch
switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。
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>
Go语言之分支结构(十一)相关推荐
- 四则运算c语言编程分支结构,C语言之分支结构(二)
原标题:C语言之分支结构(二) 大家好!今天我们来学习if语句的嵌套结构, if语句的嵌套是指在if或者else的分支下有包括了另一个if语句或者是if-else语句,if语句的嵌套位置是灵活的,嵌套 ...
- c语言用分支结构判断最大字符,第3章C语言 分支结构PPT课件.ppt
<第3章C语言 分支结构PPT课件.ppt>由会员分享,可在线阅读,更多相关<第3章C语言 分支结构PPT课件.ppt(36页珍藏版)>请在人人文库网上搜索. 1.第三章 分支 ...
- C语言之分支结构 if(一)
一 程序的三种基本结构 顺序结构:程序从上往下依次执行,这个叫顺序结构 分支结构:有选择的执行或者不执行某段代码 循环结构:重复的执行某段代码 二 分支结构之if 最简单的俩种用法 (tips: if ...
- JSD-2204-Java语言基础-分支结构-循环-Day04
1.分支结构 1.1Scanner接受用户输入的数据: 分三步,先背下来,面向对象第5天 才能理解 package day04; import java.util.Scanner; //1.导入扫描仪 ...
- C语言switch分支结构
文章目录 一.if else的不足 二.switch语句 三.注意事项 四.课后作业 五.版权声明 一.if else的不足 C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 ...
- 课堂练习4-C语言多分支结构
第1关:肥胖判断 任务描述 本关任务:通过体脂率判断某人的肥胖程度. 编程要求 根据提示,在右侧编辑器补充代码,计算并输出肥胖程度. 计算体脂率的公式是 体脂率=体重(kg)/身高(m)**2 (1) ...
- iOS开发-C语言-分支结构
一.流程控制 1. 顺序结构:默认的流程结构.按照书写顺序执行每一条语句. 2.选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码. 3.循环结构:在给定条件成立的情况下,反复执行某一 ...
- 【C语言】案例十一:分支结构(任意三个数的升序排列)
if语句--单分支结构 if(判断条件) {代码块儿 } if-else语句--双分支结构 if(判断条件) {执行语句1 } else {执行语句2 } if-else if-else语句--多分支 ...
- 《C语言及程序设计》实践项目——画分支结构流程图
返回:贺老师课程教学链接 [单分支结构流程图-大值] 问题:画流程图,输入两个整数a和b,输出其中的大值. 提示:当a<b时,交换a和b,最后输出的a一定是其中的大值.流程图中可以直接给出交换a ...
最新文章
- Python学习札记(二十三) 函数式编程4 sorted
- 有没有搞错?Java 对象不使用时,要赋值为 null?
- C++ 11 新特性 nullptr 学习
- java 1.8 vm_HotSpot虚拟机在java 1.8中的新实现
- 迈克尔 杰克逊mv_用杰克逊流式传输大型JSON文件– RxJava常见问题解答
- 使用Combres 库 ASP.NET 网站优化
- 还亲力亲为的蜡笔小新
- java程序设计是选修课_Java程序设计_中国大学 MOOC_章节考试选修课答案
- 关于.NET异常处理的思考
- postgres 显示变量,如何在PostgreSQL查询中声明变量
- Android 时间选择器 PickerView,的详细使用
- 单相无感正弦驱动方案
- wsl 搭建 ubantu环境
- Oracle TFA日志收集工具简介
- SQL SERVER 2008 R2 故障转移群集实验总结
- 2019电赛纸张计数仪分析——————致敬“谢谢惠顾”
- 心态好的人,都有这5种生活方式
- adams和matlab联合仿真的书,MATLAB和ADAMS联合仿真
- 这6个超好用的免费图片素材网站,赶紧收藏~
- 机器学习_正规方程(最小二乘法)的推导
热门文章
- uefi模式安装windows10和deepin
- 手机版本android升级包下载,ColorOS8.0升级包下载安装-oppo手机系统ColorOS8.0正式版升级包下载 安卓版 v1.0- 游娱下载站...
- python电子英汉词典显示_如何使用python为Linux打造一款命令行下的在线英汉词典...
- python json库安装_python-安装simplejson后没有名为“ json”的模块
- Scene之间的数据传递
- 计算机网络课程路由表,计算机网络之探赜索隐
- 左岸:如何修炼成某一领域的高手
- weiphp短信接口教程
- 使用xpath爬取学院新闻
- 乐优商城:笔记(六):上传微服务:LyUpload