0


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

在这里插入图片描述

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

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

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

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

在这里插入图片描述

文章目录

Go语言中的流程控制

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

1. 顺序控制

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

示例代码

package main

import"fmt"funcmain(){var num1 int=10var num2 int= num1 +20
    fmt.Println(num2)// 输出:30}

在这个例子中,程序首先定义了变量

num1

并赋值为10,然后定义

num2

并赋值为

num1 + 20

,最后打印出

num2

的值。这个过程完全按照代码的顺序执行,没有任何跳转或条件判断。

2. 条件控制

条件控制语句用于根据条件表达式的真假来决定是否执行某段代码。Go语言提供了

if

if-else

if-else if-else

等结构来实现条件控制。

2.1 if 语句

if

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

语法格式

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

示例代码

package main

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

在这里插入图片描述

2.2 if-else 语句

if-else

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

语法格式

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

示例代码

package main

import"fmt"funcmain(){
    a :=100if 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为真时执行的代码}elseif 条件表达式2{// 条件表达式1为假且条件表达式2为真时执行的代码}else{// 所有条件都不满足时执行的代码}

示例代码

package main

import"fmt"funcmain(){
    x :=5if x >10{
        fmt.Println("x 大于 10")}elseif x <5{
        fmt.Println("x 小于 5")}else{
        fmt.Println("x 等于 5")}}// 输出:x 等于 5

在这里插入图片描述

2.4 if条件语句实战

用户交互

package main

import"fmt"// 命令行程序 go build xxx.go 生成可执行程序。funcmain(){// 练习: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

循环是唯一的循环结构,但它足够灵活,可以模拟传统的

while

do-while

循环。

语法格式

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

示例代码

package main

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

在这里插入图片描述

计算1加到10的累加和

package main

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

模拟 while 循环

package main

import"fmt"funcmain(){
    x :=5for x >0{
        fmt.Println(x)
        x--}}// 输出:5//       4//       3//       2//       1

在这里插入图片描述

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

package main

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

在这里插入图片描述

无限循环

package main

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

在这里插入图片描述

3.2 for-range 循环

for-range

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

语法格式

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

示例代码

package main

import"fmt"funcmain(){
    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 main

import"fmt"funcmain(){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 main

import"fmt"funcmain(){
    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 main

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

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

5. 跳转控制

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

goto

break

continue

语句来实现跳转控制。

goto语句

语法格式:
goto 标签名

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

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

package main

import"fmt"funcmain(){
    i :=0
HERE:
    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 main

import"fmt"funcmain(){for i :=1; i <=10; i++{if i ==5{break}
        fmt.Println(i)}}

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

6.2 continue 语句

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

语法格式:
continue [标签名]

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

package main

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

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

在这里插入图片描述


本文转载自: https://blog.csdn.net/littlefun591/article/details/142166729
版权归原作者 景天科技苑 所有, 如有侵权,请联系我们删除。

“【Go】Go语言中的流程控制语句”的评论:

还没有评论