15分钟学Go 第7天:控制结构 - 条件语句

第7天:控制结构 - 条件语句

在Go语言中,控制结构是程序逻辑的重要组成部分。通过条件语句,我们可以根据不同的条件采取不同的行动。今天我们将详细探讨Go语言中的两种主要条件结构:if语句和switch语句。理解这些控制结构对于编写有效、可读的代码至关重要。

1. if 语句

if语句用于根据条件的真假来决定是否执行代码块。它是最常用的条件语句,结构简单直观。

1.1 if 语句的基本结构

if condition {// 当条件为真时执行的代码
}

1.2 if-else 语句

if语句后可以跟一个 else 语句,以便处理条件为假时的情况。

if condition {// 当条件为真时执行的代码
} else {// 当条件为假时执行的代码
}

1.3 if-else if-else 语句

可以使用多个 else if 构造来处理多个条件。

if condition1 {// 当条件1为真时执行的代码
} else if condition2 {// 当条件2为真时执行的代码
} else {// 所有条件均为假时执行的代码
}

1.4 示例代码

让我们看一个简单的示例,根据用户的年龄输出不同的内容。

package mainimport "fmt"func main() {var age intfmt.Print("请输入年龄: ")fmt.Scan(&age)if age < 18 {fmt.Println("未成年")} else if age >= 18 && age < 65 {fmt.Println("成年人")} else {fmt.Println("老年人")}
}

1.5 代码执行流程

Yes
No
Yes
No
开始
用户输入年龄
判断 age < 18
输出: 未成年
判断 age >= 18 && age < 65
输出: 成年人
输出: 老年人
结束

2. switch 语句

switch语句是另一种控制结构,可以在多个条件间进行选择,特别适合于多个可能性相对独立的情况。

2.1 switch 语句的基本结构

switch expression {
case value1:// 当expression等于value1时执行的代码
case value2:// 当expression等于value2时执行的代码
default:// expression不匹配任何case时执行的代码
}

2.2 switch 不需要 break

Go语言的switch语句隐式地在每个case执行完后自动跳出,因此不需要显示设置break

2.3 示例代码

以下是一个简单的例子,根据输入的星期几输出相应的星期名称。

package mainimport "fmt"func main() {var day intfmt.Print("请输入星期几(1-7): ")fmt.Scan(&day)switch day {case 1:fmt.Println("星期一")case 2:fmt.Println("星期二")case 3:fmt.Println("星期三")case 4:fmt.Println("星期四")case 5:fmt.Println("星期五")case 6:fmt.Println("星期六")case 7:fmt.Println("星期天")default:fmt.Println("输入无效,请输入1到7之间的数字")}
}

2.4 代码执行流程

Yes
No
Yes
No
Yes
No
Yes
No
Yes
No
Yes
No
Yes
No
开始
用户输入星期几
判断 day == 1
输出: 星期一
判断 day == 2
输出: 星期二
判断 day == 3
输出: 星期三
判断 day == 4
输出: 星期四
判断 day == 5
输出: 星期五
判断 day == 6
输出: 星期六
判断 day == 7
输出: 星期天
输出: 输入无效
结束

3. switch 的高级用法

3.1 表达式 switch

switch语句的表达式可以是任意类型。

switch day := 5; day {
case 1, 2, 3:fmt.Println("周中的日子")
case 4, 5, 6:fmt.Println("快到周末了")
case 7:fmt.Println("周日")
default:fmt.Println("无效的输入")
}

3.2 基于条件的 switch

switch语句也可以没有表达式,直接使用条件判断。

switch {
case age < 18:fmt.Println("未成年人")
case age < 65:fmt.Println("成年人")
default:fmt.Println("老年人")
}

4. 注意事项

  • if语句经常需要手动管理条件,而switch则简化了多个条件的检查。
  • 在使用switch时,可以避免使用break,这让代码更加简洁。
  • 尽管switch可以处理很多情况,但在条件较少时,简单的if通常更合适。

5. 练习题

  1. 编写一个程序,根据用户输入的分数判断等级(优、良、中、及格、差)。
  2. 创建一个程序使用switch语句来显示输入月份的天数。
  3. 编写一个程序,使用条件判断确定一个数字是奇数还是偶数,并输出相应的信息。

6. 总结

在本章中,我们探讨了Go语言中的条件语句,重点介绍了ifswitch的用法。通过示例和流程图,我们深入理解了如何根据不同条件做出决策,同时也讨论了各种使用场景。掌握这些控制结构将为我们后续的学习打下坚实的基础。

附加资源

  • Go语言官方文档 - 控制结构
  • Go语言学习资源与书籍

怎么样今天的内容还满意吗?再次感谢观众老爷的观看,关注下方GZH,回复666,送您价值199的AI大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/57533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTA-GAN:基于生成对抗网络对颈动脉和主动脉的非增强CT影像进行血管增强

写在前面 目前只分析了文章的大体内容和我个人认为的比较重要的细节&#xff0c;代码实现还没仔细看&#xff0c;后续有时间会补充代码细节部分。 文章地址&#xff1a;Generative Adversarial Network-based Noncontrast CT Angiography for Aorta and Carotid Arteries 代…

JAVA基础面试题准备

一些常见的JAVA基础题&#xff0c;面试中遇到过的会加*显示。 JAVA基础 1.Java中重载和重写的区别&#xff1f;* 2.int 和Integer类型这两个区别吗&#xff1f; 为什么需要有Integer类型&#xff1a; int和Integer类型的区别&#xff1a; 3.遍历list有那些方式吗&#xff1f;…

【Linux】进程信号(下)

目录 一、信号的阻塞 1.1 信号在内核中的保存方式 1.2 sigset_t信号集 &#xff08;1&#xff09;信号集操作 &#xff08;2&#xff09;sigprocmask函数 &#xff08;3&#xff09;sigpending函数 二、信号的处理 2.1 用户态和内核态 2.2 重谈进程地址空间 三、信号…

盘点2024年4款高清稳定的Windows10录屏工具。

Windows10电脑录屏在生活当中还是挺重要的&#xff0c;无论是教育领域的制作教程&#xff0c;还是游戏玩家记录精彩瞬间&#xff0c;亦或是商务人士进行演示&#xff0c;录屏都能发挥巨大作用。如果设备自带的一些工具无法完成录屏需求的话&#xff0c;这里帮大家找了几款好用到…

AI大模型应用(3)开源框架Vanna: 利用RAG方法做Text2SQL任务

AI大模型应用(3)开源框架Vanna: 利用RAG方法做Text2SQL任务 RAG&#xff08;Retrieval-Augmented Generation&#xff0c;如下图所示&#xff09;检索增强生成&#xff0c;即大模型LLM在回答问题时&#xff0c;会先从大量的文档中检索出相关信息&#xff0c;然后基于这些检索出…

万家数科:零售业务信息化融合的探索|OceanBase案例

本文作者&#xff1a;马琳&#xff0c;万家数科数据库专家。 万家数科商业数据有限公司&#xff0c;作为华润万家旗下的信息技术企业&#xff0c;专注于零售行业&#xff0c;在为华润万家提供服务的同时&#xff0c;也积极面向市场&#xff0c;为零售商及其生态系统提供全面的核…

挖矿病毒来势汹汹

病毒来了, 我的个人站点使用了 wordpress, 它的不知哪个漏洞让黑客攻入了我的站点 使用 top 命令看到了有不明进程始终占据了 100% 的 CPU snapshot 1 snapshot 2 通过以下 "三板斧"可以查杀这个进程 先用 top (shiftp) 查找占据 CPU 最多的进程根据其进程号 pid 查看…

【数据结构】宜宾大学-计院-实验四

栈和队列之&#xff08;栈的基本操作&#xff09; 实验目的&#xff1a;实验内容&#xff1a;实验结果&#xff1a;实验报告:&#xff08;及时撰写实验报告&#xff09;&#xff1a;实验测试结果&#xff1a;代码实现1.0&#xff1a;&#xff08;C/C&#xff09;【含注释】代码…

QGIS之三十二DEM地形导出三维模型gltf

效果 1、准备数据 (1)dem.tif (2)dom.tif 2、qgis加载dem和dom数据 3、安装插件 插件步骤可以参考这篇文章 QGIS之二十四安装插件 安装了Qgis2threejs插件,结果

无人机之自主降落系统篇

一、定义与功能 无人机自主降落系统是指无人机在无需人工干预的情况下&#xff0c;按照预先设定好的程序或基于实时感知的环境信息&#xff0c;自主完成降落过程的技术系统。该系统能够确保无人机在完成任务后安全、准确地降落到指定位置。 二、系统组成 无人机自主降落系统主…

ELK之路第二步——可视化界面Kibana

Kibana 1.安装2.解压3.修改配置4.启动 这部分内容就比较简单了&#xff0c;水一片文章。 1.安装 需要梯子 官网下载链接&#xff1a;https://www.elastic.co/cn/downloads/past-releases/kibana-7-3-0 如果你去官网下载页面&#xff0c;点击下载是404报错&#xff0c;记得切换…

redis的zset实现下滑滚动分页查询思路

常规zset查询 我们redis的数据为 我们知道 我们常规查询的话 我们假如 zset 表中 有7个元素&#xff0c;然后我们进行分页查询的话&#xff0c;我们一次查3个元素&#xff0c;然后查出来元素 和元素的分数 我们redis的语法应该这样写 zrevrangebyscore wang 1000 0 withsc…

Flutter 12 实现双击屏幕显示点赞爱心多种动画(AnimationIcon)效果

本文主要是使用Flutter封装一个双击屏幕显示点赞爱心UI效果&#xff0c;并实现了爱心Icon 透明度、缩放、旋转、渐变等动画效果。 实现效果&#xff1a; 实现逻辑&#xff1a; 1、封装FavoriteGesture&#xff08;爱心手势&#xff09;实现双击屏幕显示爱心Icon&#xff1b; …

【设计模式系列】抽象工厂模式

一、什么是抽象工厂模式 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一个接口&#xff0c;用于创建一系列相关或相互依赖的对象&#xff0c;而无需指定它们具体的类。这种模式允许客户端使用抽象的接口来创建一组…

VoLTE 微案例:VoLTE 注册失败,I-CSCF 返回 403,HSS(UAR) 返回 5001

目录 1. 问题描述 2. 故障注册流程与正常流程对照 3. 结论 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 cpp 方向修改简历,模拟面试,学习指导都可以添加博主低价指导哈。 1. 问题描述

对比迁移项目的改动

文章目录 对比迁移项目的改动场景背景解决方案 对比迁移项目的改动 场景背景 同源定制化项目&#xff0c;同一套代码扩展出来的项目&#xff08;从领导口中得知&#xff09; A项目的有三维地图展示&#xff0c;项目B跑起来却加载不出来&#xff0c;但是本地运行A项目代码&…

vue-pc 实现内嵌式微信扫码登录(附完整代码)

一、准备工作 1. 注册微信开放平台账号 地址&#xff1a;&#xff08;[https://open.weixin.qq.com/](https://open.weixin.qq.com/)&#xff09; 2. 申请开发者资质认证&#xff1a; 3. 创建网站应用 4. 查看应用详情&#xff0c;拿到 AppID 、 AppSecret 和 redirect_uri (授…

如何在服务器上部署开源大模型 GLM-4-9B-Chat 并应用到RAG应用中

本地服务器部署开源大模型有一个前提&#xff0c;就是得有 GPU 显卡资源&#xff0c;在我下面的例子中我租用了 autodl 中的算力资源&#xff0c;具体是租用了一张消费级别的 RTX 3090 显卡。 环境配置 操作系统及版本&#xff1a;ubuntu 22.04CUDA 版本&#xff1a; 12.1pyto…

【MATLAB源码-第263期】基于matlab的帝企鹅优化算法(EPO)无人机三维路径规划,输出做短路径图和适应度曲线.

操作环境&#xff1a; MATLAB 2022a 1、算法描述 帝企鹅优化算法&#xff08;Emperor Penguin Optimizer&#xff0c;简称EPO&#xff09;是一种基于自然现象的优化算法&#xff0c;灵感来自于帝企鹅在南极极寒环境中的生活习性。帝企鹅是一种群居动物&#xff0c;生活在极端…

再创佳绩 | 竹云荣获“数据要素×”大赛黑龙江分赛一等奖!

近日&#xff0c;由国家数据局、黑龙江省人民政府指导&#xff0c;黑龙江省发改委、黑龙江省数据局主办的2024年“数据要素”大赛黑龙江分赛决赛盛大召开。竹云作为联合单位参与《供热数据资产登记评价中心供热数据要素综合服务平台》项目&#xff0c;荣获绿色低碳赛道一等奖。…