Golang-程序流程控制 ifswitch

Posted essaycode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang-程序流程控制 ifswitch相关的知识,希望对你有一定的参考价值。

  

程序流程控制介绍

  在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。

  1)顺序控制
  2)分支控制
  3)循环控制 

  顺序控制
  程序从上到下逐行地执行,中间没有任何判断和跳转。
  一个案例说明,必须下面的代码中,没有判断,也没有跳转.因此程序按照默认的流程执行,即顺序控制。
  顺序控制的一个流程图

  技术图片      技术图片

 

 

   顺序控制举例和注意事项

Golang 中定义变量时采用合法的前向引用。如:
func main() {
    var num1 int = 10 //声明了 num1
    var num2 int = num1 + 20 //使用 num1
    fmt.Println(num2)

}
错误形式:
func main() {
    var num2 int = num1 + 20 //使用 num1 var num1 int = 10 // 声 明 num1 (×)             fmt.Println(num2)
} 

  分支控制 

    分支控制就是让程序有选择执行。有下面三种形式
    1)单分支
    2)双分支

 

    3)多分支

    单分支控制

      基本语法

      技术图片  

      请大家看个案例[ifDemo.go]:
      编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 "你年龄大于 18,要对自己的行为负责!" 需求---[分析] >代码

      技术图片 技术图片

      单分支的流程图
      流程图可以用图形方式来更加清晰的描述程序执行的流程。

      技术图片

 

 

       单分支细节说明

      技术图片

 

 

     双分支控制

      基本语法

      技术图片

 

 

       请大家看个案例[ifDemo.go]:
      编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 "你年龄大于 18,要对自己的行为负责!" 需求---[分析] >代码

      技术图片

 

 

       ?双分支的流程图的分析

       技术图片  

      对双分支的总结
       1.从上图看 条件表达式就是 age >18
       2.执行代码块 1 ===> fmt.Println("你的年龄大于 18") ..
       3.执行代码块 2 ===> fmt.Println("你的年龄不大 ") .
       4.强调一下 双分支只会执行其中的一个分支。

     单分支和双分支的案例

      技术图片

       技术图片

         技术图片

         技术图片

 

 

          5)编写程序,声明 2 个 int32 型变量并赋值。判断两数之和,如果大于等于 50,打印“hello world!

          技术图片

         6)编写程序,声明 2 个 float64 型变量并赋值。判断第一个数大于 10.0,且第 2 个数小于 20.0,打印两数之和。
         7)【选作】定义两个变量 int32,判断二者的和,是否能被 3 又能被 5 整除,打印提示信息

           技术图片

 

 

         8)判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被 4 整除,但不能被 100整除;(2)能被 400 整除

          技术图片

 

 

      多分支控制

      基本语法

      技术图片

      对上面基本语法的说明
       1)多分支的判断流程如下:
        (1)先判断条件表达式 1 是否成立,如果为真,就执行代码块 1
        (2)如果条件表达式 1 如果为假,就去判断条件表达式 2 是否成立, 如果条件表达式 2 为真, 就执行代码块 2
        (3)依次类推.
        (4)如果所有的条件表达式不成立,则执行 else 的语句块。
       2)else 不是必须的。
       3)多分支只能有一个执行入口。看一个多分支的流程图(更加清晰)

        技术图片

        多分支的快速入门案例
        岳小鹏参加 Golang 考试,他和父亲岳不群达成承诺: 如果:
        成绩为 100 分时,奖励一辆 BMW;
        成绩为(80,99]时,奖励一台 iphone7plus; 当成绩为[60,80]时,奖励一个 iPad;
        其它时,什么奖励也没有。
        请从键盘输入岳小鹏的期末成绩,并加以判断代码如下:

         技术图片

 

 

         对初学者而言,有一个使用陷阱.

        技术图片

 

 

         练习题

        技术图片

 

 

         技术图片   技术图片

 

        技术图片技术图片

 

 

 

嵌套分支

   基本介绍

  在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。

  技术图片

  案例

  参加百米运动会,如果用时 8 秒以内进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。【可以让学员先练习下】, 输入成绩和性别。

  技术图片

  出票系统:根据淡旺季的月份和年龄,打印票价 [考虑学生先做] 4_10 旺季:
  成人(18-60):60 儿童(<18):半价老人(>60):1/3
  淡季:
  成人:40 其他:20

  技术图片

 

 

   技术图片

 

switch 分支控制

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

  语法及流程控制图

  技术图片  技术图片

  对上图的说明和总结
  1)switch 的执行的流程是,先执行表达式,得到值,然后和 case 的表达式进行比较,如果相等, 就匹配到,然后执行对应的 case 的语句块,然后退出 switch 控制。
  2)如果 switch 的表达式的值没有和任何的 case 的表达式匹配成功,则执行 default 的语句块。执行后退出 switch 的控制.
  3)golang 的 case 后的表达式可以有多个,使用 逗号 间隔.
  4)golang 中的 case 语句块不需要写 break , 因为默认会有,即在默认情况下,当程序执行完 case 语句块后,就直接退出该 switch 控制结构。

  案例

  请编写一个程序,该程序可以接收一个字符,比如: a,b,c,d,e,f,g a 表示星期一,b 表示星期二  … 根据用户的输入显示相依的信息.要求使用 switch  语句完成

  技术图片

 

  switch 的使用的注意事项和细节

  1)case/switch 后是一个表达式( 即:常量值、变量、一个有返回值的函数等都可以)

  技术图片技术图片

 

 

   2)case 后的各个表达式的值的数据类型,必须和 switch 的表达式数据类型一致

  技术图片

 

 

   3)case 后面可以带多个表达式,使用逗号间隔。比如 case 表达式 1,  表达式 2 ...

  技术图片

 

 

   4)case 后面的表达式如果是常量值(字面量),则要求不能重复

  技术图片

  5)case 后面不需要带break , 程序匹配到一个 case 后就会执行对应的代码块,然后退出 switch,如果一个都匹配不到,则执行 default
  6)default 语句不是必须的.
  7)switch 后也可以不带表达式,类似 if --else 分支来使用。【案例演示】

  技术图片

 

 

   8)switch 后也可以直接声明/定义一个变量,分号结束,不推荐。 【案例演示】

  技术图片

 

 

   9)switch 穿透-fallthrough ,如果在 case 语句块后增加 fallthrough ,则会继续执行下一个 case,也叫 switch 穿透

  技术图片

  10)Type Switch:switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际指向的变量类型 【还没有学 interface, 先体验一把】

  技术图片

  switch 的课堂练习
  1)使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出“other”。

   技术图片

 

 

   2)对学生成绩大于 60 分的,输出“合格”。低于 60 分的,输出“不合格”。(注:输入的成绩不能大于 100)

  技术图片  

  3)根据用户指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋 季 12, 1, 2 冬季
  技术图片

 

 

   switch 和 if 的比较

  总结了什么情况下使用 switch ,什么情况下使用 if
  1)如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型。建议使用 swtich语句,简洁高效。
  2)其他情况:对区间判断和结果为 bool 类型的判断,使用 if,if 的使用范围更广。

 

以上是关于Golang-程序流程控制 ifswitch的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript之基础-6 JavaScript 分支结构 (ifif-elseelse ifswitch-case)

语句由你控制,详细刨析ifswitch等分支语句

Golang程序的流程控制

Golang程序流程控制

Golang程序流程控制

go语言-golang基础-流程控制