go语言-控制结构:if for switch那些事
创始人
2024-06-03 10:52:35
0

前言

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云博客专家
😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人,一起加油进步
🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

文章目录

  • 前言
  • 一. if 条件语句
    • 1.1 案例一:单分支语句
    • 1.2 案例二: 多分支语句
  • 二. switch选择语句
    • 2.1 案例一:switch语句的应用案例
  • 三. for 循环
    • 3.1 for循环介绍
    • 3.2 for循环案例
  • 总结

在这里插入图片描述

一. if 条件语句

if语句是条件语句,它根据布尔表达式的值来决定选择执行哪个分支:如果表达式的值为true,则if分支被执行;

如果表达式的值为false,则else分支被执行。

下面,我们来看一个if条件语句示例:

1.1 案例一:单分支语句

package mainimport "fmt"func main() {i := 20if i > 10{fmt.Println("i>10")}else{fmt.Println("i<10")}
}

在这个案例中使用了if ...else语句, 当i的值大于10为true的时候,执行第一条分支;否则执行第二条分支。

关于if语句的一些惯例:

  • if后面的条件表达式不需要使用“()”,这与有些编程语言不一样,也体现了Go语言的简洁。
  • 每个条件分支(if或者else)中的大括号是必需的,哪怕大括号里只有一行代码。
  • if紧跟的大括号“{”不能独占一行,else前的大括号“}”也不能独占一行,否则编译不会通过。
  • if…else条件语句中还可以增加多个else if,以增加更多的条件分支。

1.2 案例二: 多分支语句

我们可以使用这种方式增加更多的分支条件,不过这种方式一般不推荐,因为代码的可读性较差,所以多个条件分支我们后面会用switch代替,让代码更清晰,简洁。

package mainimport "fmt"func main() {i := 10if i > 10{fmt.Println("i>10")}else if i < 10 {fmt.Println("i<10")}else{fmt.Println("i=10")}
}

在这个案例中我们除了可以先定义i := 10 之外,也可以直接在if语句后面添加,但注意加分号;

package main
​
import "fmt"
​
func main() {if i:=10;i > 10{fmt.Println("i>10")}else if i < 10 {
​fmt.Println("i<10")}else{
​fmt.Println("i=10")}
}

二. switch选择语句

if条件语句比较适合分支较少的情况,如果有很多分支的话,选择switch会更方便,比如以上示例,使用switch改造后的代码如下:

2.1 案例一:switch语句的应用案例

package mainimport "fmt"func main() {switch i:=6; {case i > 10:fmt.Println("i>10")case i>5 && i <=10:fmt.Println("5

在go语言中, switch 的case ,从上往下逐一判断,一旦满足条件,就立即执行对应的分支并返回,这时候,对其余的分支就不再判断。

这就相当于:默认情况下,Go语言中switch的case最后自带break.

但有时候我们不想退出,而是想要执行一个紧跟的case怎么办?

go语言提供了fallthrough的关键字,我们再来看一个例子:

package mainimport "fmt"func main() {switch i:=6; {case i>5 && i <=10:fmt.Println("5 10:fmt.Println("hellworld")default:fmt.Println("i<=5")}
}

这么写,程序会在执行完第一个case之后,进入到第二个case语句去执行,所以结果:

三. for 循环

3.1 for循环介绍

所谓的循环,就是程序让代码多次执行相同的代码块。而for循环是go语言中唯一的循环结构,for循环用的最多的地方就是遍历数组或者切片。

go语言虽然仅有一种循环语句,但常用的方式都能够支持:

第一种方式:

for i :=0; i<3;i++{}

第二种方式:

for x <10 {
x++
}

第三种方式:

for {
break
}

3.2 for循环案例

案例一:求1-100的和

package mainimport "fmt"func main() {sum := 0for i :=1; i<=100;i++{sum +=i}fmt.Println("the sum is" ,sum)
}

其中:
1)第一部分是一个简单语句,一般用于for循环的初始化,比如这里声明了一个变量i,并用i:=1对其进行初始化。
2)第二部分是for循环的条件,也就是说,它表示for循环什么时候结束。这里的条件是i<=100。
3)第三部分是更新语句,一般用于更新循环的变量,比如这里的i++,这样才能达到递增循环的目的

上面的案例也可以写成类似于其他语言中while的形式:

案例二:

package mainimport "fmt"func main() {sum := 0i:=1for  i<=100{sum +=ii++}fmt.Println("the sum is" ,sum)
}

这个示例和上面的for示例的效果是一样的,但是这里的for后面只有i<=100这一个条件语句,也就是说,它达到了while的效果

**案例三: 演示break和continue的用户

先来看break:

package mainimport "fmt"func main() {sum := 0i:=1for {sum +=ii++if i >100{break}}fmt.Println("the sum is" ,sum)
}

以上三种方法都实现了统计0-100的和。

再来看continue的用法:

package mainimport "fmt"func main() {
for i := 0; i < 5; i++ {
if i == 2 {  // 当 i == 2时,跳出整个循环            
break
}
fmt.Printf(" %d", i)
}
fmt.Println()
for i := 0; i < 5; i++ {
if i == 2 {  // 当i == 2时,跳出当前轮循环            
continue
}
fmt.Printf(" %d", i)
}
}

执行结果如下:

0 1

0 1 3 4

案例四: break 结束标记内的所有循环

package mainimport "fmt"func main() {// 使用标记,break掉标记内的所有循环fmt.Println("---- break label ----")
re:for i := 1; i <= 3; i++ {fmt.Printf("i: %d\n", i)for i2 := 11; i2 <= 13; i2++ {fmt.Printf("i2: %d\n", i2)break re}}
}
//---- break label ----
//i: 1
//i2: 11

总结

for循环的用法比较多,坚持练习,一起努力。

💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 博客主页:mufeng.blog.csdn.net
💕 本文由沐风晓月原创,首发于CSDN博客
💕 全力以赴,持续学习,不负如来不负卿
💕 喜欢的话记得点赞收藏哦

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...