当前位置:首页 » 《我的小黑屋》 » 正文

【Go】Go语言中的流程控制语句

21 人参与  2024年09月23日 16:41  分类 : 《我的小黑屋》  评论

点击全文阅读


在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

?? 养成好习惯,先赞后看哦~??

? 作者简介:景天科技苑
?《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
?《博客》:Python全栈,Golang开发,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:Go语言开发零基础到高阶实战
景天的主页:景天科技苑

在这里插入图片描述

文章目录

Go语言中的流程控制1. 顺序控制2. 条件控制2.1 if 语句2.2 if-else 语句2.3 if-else if-else 语句2.4 if条件语句实战 3. 循环控制3.1 for 循环3.2 for-range 循环3.3 打印九九乘法表 4. 分支控制4.1 switch 语句4.2 case穿透 5. 跳转控制goto语句 6. 终止循环6.1 break 语句6.2 continue 语句

Go语言中的流程控制

在编程中,流程控制是决定程序如何执行的关键部分。Go语言作为一种静态类型、编译型语言,其流程控制机制与其他高级语言类似,但也有一些独特之处。本文将详细探讨Go语言中的流程控制语句,包括顺序控制、条件控制(if、if-else、if-else if-else)、循环控制(for循环、for-range循环)、分支控制(switch语句)、以及跳转控制(goto、break、continue)。本文通过实际案例,我们将深入理解这些控制语句的使用方法和应用场景。

1. 顺序控制

顺序控制是最基本的流程控制,程序按照从上到下的顺序逐行执行。在Go语言中,如果中间没有任何判断和跳转语句,程序就会按照这种默认的顺序执行。

示例代码

package mainimport "fmt"func main() {    var num1 int = 10    var num2 int = num1 + 20    fmt.Println(num2) // 输出:30}

在这个例子中,程序首先定义了变量num1并赋值为10,然后定义num2并赋值为num1 + 20,最后打印出num2的值。这个过程完全按照代码的顺序执行,没有任何跳转或条件判断。

2. 条件控制

条件控制语句用于根据条件表达式的真假来决定是否执行某段代码。Go语言提供了ifif-elseif-else if-else等结构来实现条件控制。

2.1 if 语句

if语句是最基本的条件控制语句,用于在条件表达式为真时执行一段代码。

语法格式

if 条件表达式 {    // 条件为真时执行的代码}

示例代码

package mainimport "fmt"func main() {    a := 10    if a < 20 {        fmt.Println("a 小于 20")    }    fmt.Println("a 的值为:", a)}// 输出:a 小于 20//       a 的值为: 10

在这里插入图片描述

2.2 if-else 语句

if-else语句用于在条件表达式为真时执行一段代码,否则执行另一段代码。

语法格式

if 条件表达式 {    // 条件为真时执行的代码} else {    // 条件为假时执行的代码}

示例代码

package mainimport "fmt"func main() {    a := 100    if a < 20 {        fmt.Println("a 小于 20")    } else {        fmt.Println("a 不小于 20")    }    fmt.Println("a 的值为:", a)}// 输出:a 不小于 20//       a 的值为: 100

在这里插入图片描述

2.3 if-else if-else 语句

if-else if-else语句用于处理多个条件分支,当某个条件满足时,执行相应的代码块。

语法格式

if 条件表达式1 {    // 条件表达式1为真时执行的代码} else if 条件表达式2 {    // 条件表达式1为假且条件表达式2为真时执行的代码} else {    // 所有条件都不满足时执行的代码}

示例代码

package mainimport "fmt"func main() {    x := 5    if x > 10 {        fmt.Println("x 大于 10")    } else if x < 5 {        fmt.Println("x 小于 5")    } else {        fmt.Println("x 等于 5")    }}// 输出:x 等于 5

在这里插入图片描述

2.4 if条件语句实战

用户交互

package mainimport "fmt"// 命令行程序 go build xxx.go 生成可执行程序。func main() {// 练习:if的练习// 判断用户密码输入是否正确// 输入框 : 接收用户的输入 (新知识)// 第一次判断// 输入框 :请再次输入密码  接收用户的输入 (新知识)// 第二次判断// 如果两次都是对的,那么则登录成功//var num1 intvar num2 int// 提示用户输入fmt.Printf("请输入密码 : \n")//fmt.Scan() 输入。传入的是指针对象,即是内存地址// 接收用户的输入 (阻塞式等待... 直到用户输入之后才继续运行)最简单的人机交互// Scan()  &num1地址,fmt.Scan(&num1) // 等待你的输入,卡住... 如果你输入完毕,回车。输入内容就会赋值给num// 123456 模拟数据,未来是在数据库中查询出来的。根据用户查的if num1 == 123456 {fmt.Println("请再次输入密码: ")fmt.Scan(&num2)if num2 == 123456 {fmt.Println("登录成功")} else {fmt.Println("登录失败")}} else {fmt.Println("登录失败")}}

在这里插入图片描述

3. 循环控制

循环控制语句用于重复执行一段代码,直到满足特定的条件为止。Go语言提供了for循环来实现循环控制,并通过for-range结构来遍历集合。

3.1 for 循环

Go语言中的for循环是唯一的循环结构,但它足够灵活,可以模拟传统的whiledo-while循环。

语法格式

for 初始化语句; 条件表达式; 迭代语句 {    // 循环体}

示例代码

package mainimport "fmt"func main() {    for i := 0; i < 5; i++ {        fmt.Println(i)    }}// 输出:0//       1//       2//       3//       4

在这里插入图片描述

计算1加到10的累加和

package mainimport "fmt"// 计算1加到10的累加和func main() {    sum := 0    //goland的快捷输入fori,可以生成循环结构模板    for i := 1; i <= 10; i++ {        sum += i    }    fmt.Println(sum)}

模拟 while 循环

package mainimport "fmt"func main() {    x := 5    for x > 0 {        fmt.Println(x)        x--    }}// 输出:5//       4//       3//       2//       1

在这里插入图片描述

探究for循环
init:起始值 end:结束值 condition:条件变量
for 循环可以直接用
在for循环中定义的变量,作用域就只在 for循环内,外面是无法调用的
for + 结束for条件就可以跑起来

package mainimport "fmt"// 探究for循环   init:起始值  end:结束值  condition:条件变量func main() {    i := 0    // for 循环可以直接    // 在for循环中定义的变量,作用域就只在 for循环内,外面是无法调用的    // for + 结束for条件就可以跑起来    for i <= 5 {        i++    }    fmt.Println(i)}

在这里插入图片描述

无限循环

package mainimport (    "fmt"    "time")func main() {    for {        fmt.Println("This will run indefinitely!")        //每隔一秒执行一次        time.Sleep(1 * time.Second)        // 通常这里会加入某种条件来跳出循环        // 例如通过break语句    }}

在这里插入图片描述

3.2 for-range 循环

for-range循环是Go语言中处理集合(如数组、切片、字符串、映射)的便捷方式。它会自动迭代集合中的每个元素,并返回元素的索引和值(对于映射,则返回键和值)。

语法格式

for 索引, 值 := range 集合 {    // 循环体}

示例代码

package mainimport "fmt"func main() {    nums := []int{1, 2, 3, 4, 5}    for idx, num := range nums {        fmt.Printf("Index: %d, Value: %d\n", idx, num)    }}// 输出:Index: 0, Value: 1//       Index: 1, Value: 2//       Index: 2, Value: 3//       Index: 3, Value: 4//       Index: 4, Value: 5

在这里插入图片描述

3.3 打印九九乘法表

代码示例:

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

在这里插入图片描述

4. 分支控制

分支控制语句用于根据不同的条件执行不同的代码块。Go语言提供了switch语句来实现分支控制,并允许在switch语句中进行类型匹配(type switch)。

4.1 switch 语句

switch语句基于不同的条件执行不同的代码块,与if-else系列语句相比,它在处理多个条件时更为清晰和简洁。

语法格式

switch 表达式 {case 值1:    // 表达式等于值1时执行的代码case 值2, 值3:    // 表达式等于值2或值3时执行的代码default:    // 表达式与所有case都不匹配时执行的代码}

示例代码

package mainimport "fmt"func main() {    grade := "B"    switch grade {    case "A":        fmt.Println("优秀")    case "B", "C":        fmt.Println("良好")    case "D":        fmt.Println("及格")    default:        fmt.Println("不及格")    }}// 输出:良好

在这里插入图片描述

如果所有条件都不满足,走default分支
在这里插入图片描述

4.2 case穿透

特殊的情况:需要多个条件结果的输出,case穿透 。fallthrough
在case中 一旦使用了 fallthrough,则会强制执行下一个case语句,不会去判断条件的。

示例代码

package mainimport "fmt"func main() {    grade := "B"    switch grade {    case "A":        fmt.Println("优秀")    case "B", "C":        fmt.Println("良好")        //在case中 一旦使用了 fallthrough,则会强制执行下一个case语句,不会去判断条件的        fallthrough    case "D":        fmt.Println("及格")    default:        fmt.Println("不及格")    }}

可以看到,grade满足case “B”, “C”,走了这个分支后,又走了下面一个分支case “D”
fallthrough实现了case穿透
在这里插入图片描述

5. 跳转控制

跳转控制语句用于改变程序的正常执行流程,Go 语言提供了 gotobreakcontinue 语句来实现跳转控制。

goto语句

语法格式:
goto 标签名

...  标签名:  // 代码块

示例代码(尽管不推荐,但展示其用法):

package mainimport "fmt"func main() {    i := 0HERE:    fmt.Println(i)    i++    if i < 5 {        goto HERE    }}// 输出:从0到4的连续数字

在这里插入图片描述

6. 终止循环

break : 结束整个循环,立即停止

continue :结束当前这次循环,继续进行下一次循环

6.1 break 语句

break语句用于提前终止for、switch或select语句的执行。在多层嵌套循环中,break仅终止最近的一层循环。

语法格式:
break [标签名]

如果break后面跟有标签名,则会终止该标签指定的循环或switch语句。

示例代码:

package mainimport "fmt"func main() {    for i := 1; i <= 10; i++ {        if i == 5 {            break        }        fmt.Println(i)    }}

i=5的时候退出循环
在这里插入图片描述

6.2 continue 语句

continue语句用于跳过当前循环的剩余部分,直接进入下一次迭代。同样,continue仅影响最近的一层循环。

语法格式:
continue [标签名]

如果continue后面跟有标签名,则会跳过该标签指定的循环的剩余部分,直接进行下一次迭代。
示例代码:

package mainimport "fmt"func main() {    for i := 1; i <= 10; i++ {        if i == 5 {            continue // 到这里就结束了当次循环,不会向下了,继续从头开始        }        fmt.Println(i)    }}

跳过i=5的那次循环,继续进行后续的循环

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/163569.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1