九、程序的流程结构(if分支语句,Switch分支,for循环)

news/2024/10/27 22:24:12/

一、程序的流程结构

程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。

顺序结构:从上向下,逐行执行。

选择结构:条件满足,某些代码才会执行。0-1次

​ 分支语句:if,switch,select

循环结构:条件满足,某些代码会被反复的执行多次。0-N次

​ 循环语句:for

二、条件语句

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)
}

如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。它的语法是

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")}
}
//输出结果
10 is even

需要注意的是,num的定义在if里,那么只能够在该if…else语句块中使用,否则编译器会报错的。

switch语句:“开关”

  • switch是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,并根据匹配执行代码块。它可以被认为是一种惯用的方式来写多个if else子句。

  • switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。

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

  • 而如果switch没有表达式,它会匹配true

  • Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。

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

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

    package mainimport ("fmt"
    )func main() {var grade string = "B"var marks int = 90switch marks {case marks:grade = "A"case 80:grade = "B"case 50, 60, 70:grade = "C" //case 后可以由多个数值default:grade = "D"}//表达式被省略,则被认为是switch true,并且每个case表达式都被计算为trueswitch {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)//如需贯通后续的一个case,就添加fallthrough,只能是某个case的最后一行 ,写在最后一个case也会报错switch x := 5; x {default:fmt.Println(x)case 5:x += 10fmt.Println(x)fallthroughcase 6:x += 20fmt.Println(x)fallthroughcase 7:x += 30fmt.Println(x)fallthroughcase 8:x += 40fmt.Println(x)}
    }
    //输出结果
    优秀!
    你的等级是 A
    15
    35
    65
    105
    
  • switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。

    package mainimport "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>
    

for循环

  • 程序的流程控制结构一共有三种:

    • 顺序结构:代码从上向下逐行的执行;
    • 选择结构:条件满足,某些代码才会被执行。0-1次;
    • 循环结构:条件满足,某些代码会被反复的多次执行。0-n次。
  • 语法结构:

    • for init; condition; post { }(跟Java类似)

    • package mainimport (  "fmt"
      )func main() {  for i := 1; i <= 10; i++ {fmt.Printf(" %d",i)}
      }
      

http://www.ppmy.cn/news/154144.html

相关文章

程序设计综合实习(C语言):用指针优化学生成绩排名

一.目的 1&#xff0e;熟悉变量的指针和指向变量的的指针变量的概念和使用 2&#xff0e;熟悉数组的指针和指向数组的的指针变量的概念和使用 3. 掌握冒泡法或选择法排序的算法 4. 掌握函数的定义、调用、声明&#xff0c;以及参数的两种传递方式 二、实习环境 Visual Studio 2…

Shell脚本数组应用(查增改删)

记录&#xff1a;438 场景&#xff1a;Shell脚本数组应用&#xff0c;数组定义、数组查询、数组增加、数组修改、数组删除。 版本&#xff1a;CentOS Linux release 7.9.2009。 1.Shell脚本数组 (1)Shell脚本中使用小括号()来表示数组、元素之间使用空格分隔。赋值号“”的…

SpringCloud GateWay 学习

SpringCloud GateWay 文章目录 SpringCloud GateWay1 Gateway 介绍2 代码实现 1 Gateway 介绍 有一个前后端分离项目&#xff0c;分析如图 使用网关服务Gateway&#xff0c;重构项目架构 Gateway 是在 Spring 生态系统之上构建的 API 网关服务&#xff0c;基于 Spring &#x…

首款国产全画幅8K50P广播级摄像机

近日&#xff0c;在2021中国网络媒体论坛央视总台展位上首次曝光博冠8K全新的广播级摄像机,其搭载了最新的35mm全画幅8K CMOS图像传感器,约4800万有效像素(8192 x 4320)支持H.265,10-bit格式拍摄的8K 50fps视频,,双原生ISO感光技术(ISO:640-2560),使视频拍摄时获取更宽的感光范…

aps和php撒意思?,aps-c画幅是什么意思

aps-c画幅是指数码相机的CCD(CMOS)的尺寸与APS的C型画幅大小相仿&#xff0c;在25mmX17mm左右&#xff1b;差不多是全画幅CCD(CMOS)面积的一半&#xff0c;也称半幅机。 本文演示环境&#xff1a;Windows7系统&#xff0c;Dell G3电脑 APS-C画幅意思&#xff1a;APS-C画幅指的就…

天津哪个相机行卖单反最好

天津金典相机行 &#xff0c;专业销售&#xff0c;收购&#xff0c;回收单反相机&#xff0c;为您提供优质的服务&#xff0c;我们同时在蜂鸟、佳友、色影无忌、淘宝、中国摄影网络等网站上均开设了网上商店,欢迎广大摄影爱好者在我们的网上商店交、购买、出售、租赁、交换喜爱…

国产博冠8K全画幅摄像机B1获ISLE创新奖

4月7日-9日&#xff0c;2023国际智慧显示及系统集成展&#xff08;ISLE&#xff09;与第11届中国电子信息博览会&#xff08;CITE&#xff09;在深同步盛大开启。BOSMA博冠8K作为国产8K摄像机先行者&#xff0c;受邀参与&#xff0c;并携2大产品系列及场景解决方案亮相&#xf…