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的注意事项

  1. case后的常量值不能重复
  2. case后可以有多个常量值
  3. 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语言之分支结构(十一)相关推荐

  1. 四则运算c语言编程分支结构,C语言之分支结构(二)

    原标题:C语言之分支结构(二) 大家好!今天我们来学习if语句的嵌套结构, if语句的嵌套是指在if或者else的分支下有包括了另一个if语句或者是if-else语句,if语句的嵌套位置是灵活的,嵌套 ...

  2. c语言用分支结构判断最大字符,第3章C语言 分支结构PPT课件.ppt

    <第3章C语言 分支结构PPT课件.ppt>由会员分享,可在线阅读,更多相关<第3章C语言 分支结构PPT课件.ppt(36页珍藏版)>请在人人文库网上搜索. 1.第三章 分支 ...

  3. C语言之分支结构 if(一)

    一 程序的三种基本结构 顺序结构:程序从上往下依次执行,这个叫顺序结构 分支结构:有选择的执行或者不执行某段代码 循环结构:重复的执行某段代码 二 分支结构之if 最简单的俩种用法 (tips: if ...

  4. JSD-2204-Java语言基础-分支结构-循环-Day04

    1.分支结构 1.1Scanner接受用户输入的数据: 分三步,先背下来,面向对象第5天 才能理解 package day04; import java.util.Scanner; //1.导入扫描仪 ...

  5. C语言switch分支结构

    文章目录 一.if else的不足 二.switch语句 三.注意事项 四.课后作业 五.版权声明 一.if else的不足 C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 ...

  6. 课堂练习4-C语言多分支结构

    第1关:肥胖判断 任务描述 本关任务:通过体脂率判断某人的肥胖程度. 编程要求 根据提示,在右侧编辑器补充代码,计算并输出肥胖程度. 计算体脂率的公式是 体脂率=体重(kg)/身高(m)**2 (1) ...

  7. iOS开发-C语言-分支结构

    一.流程控制 1. 顺序结构:默认的流程结构.按照书写顺序执行每一条语句. 2.选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码. 3.循环结构:在给定条件成立的情况下,反复执行某一 ...

  8. 【C语言】案例十一:分支结构(任意三个数的升序排列)

    if语句--单分支结构 if(判断条件) {代码块儿 } if-else语句--双分支结构 if(判断条件) {执行语句1 } else {执行语句2 } if-else if-else语句--多分支 ...

  9. 《C语言及程序设计》实践项目——画分支结构流程图

    返回:贺老师课程教学链接 [单分支结构流程图-大值] 问题:画流程图,输入两个整数a和b,输出其中的大值. 提示:当a<b时,交换a和b,最后输出的a一定是其中的大值.流程图中可以直接给出交换a ...

最新文章

  1. Python学习札记(二十三) 函数式编程4 sorted
  2. 有没有搞错?Java 对象不使用时,要赋值为 null?
  3. C++ 11 新特性 nullptr 学习
  4. java 1.8 vm_HotSpot虚拟机在java 1.8中的新实现
  5. 迈克尔 杰克逊mv_用杰克逊流式传输大型JSON文件– RxJava常见问题解答
  6. 使用Combres 库 ASP.NET 网站优化
  7. 还亲力亲为的蜡笔小新
  8. java程序设计是选修课_Java程序设计_中国大学 MOOC_章节考试选修课答案
  9. 关于.NET异常处理的思考
  10. postgres 显示变量,如何在PostgreSQL查询中声明变量
  11. Android 时间选择器 PickerView,的详细使用
  12. 单相无感正弦驱动方案
  13. wsl 搭建 ubantu环境
  14. Oracle TFA日志收集工具简介
  15. SQL SERVER 2008 R2 故障转移群集实验总结
  16. 2019电赛纸张计数仪分析——————致敬“谢谢惠顾”
  17. 心态好的人,都有这5种生活方式
  18. adams和matlab联合仿真的书,MATLAB和ADAMS联合仿真
  19. 这6个超好用的免费图片素材网站,赶紧收藏~
  20. 机器学习_正规方程(最小二乘法)的推导

热门文章

  1. uefi模式安装windows10和deepin
  2. 手机版本android升级包下载,ColorOS8.0升级包下载安装-oppo手机系统ColorOS8.0正式版升级包下载 安卓版 v1.0- 游娱下载站...
  3. python电子英汉词典显示_如何使用python为Linux打造一款命令行下的在线英汉词典...
  4. python json库安装_python-安装simplejson后没有名为“ json”的模块
  5. Scene之间的数据传递
  6. 计算机网络课程路由表,计算机网络之探赜索隐
  7. 左岸:如何修炼成某一领域的高手
  8. weiphp短信接口教程
  9. 使用xpath爬取学院新闻
  10. 乐优商城:笔记(六):上传微服务:LyUpload