当前位置: 首页 > article >正文

Go语言中的if else控制语句

if else是Go语言中最基础也最常用的条件控制语句,用于根据条件执行不同的代码块。下面我将详细介绍Go语言中if else的各种用法和特性。

1. 基本语法

1.1. 最简单的if语句

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

示例:

if x > 10 {fmt.Println("x大于10")
}

1.2. if-else语句

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

示例:

if x > 10 {fmt.Println("x大于10")
} else {fmt.Println("x不大于10")
}

1.3. if-else多分支语句

if 条件表达式1 {// 条件1为true时执行的代码
} else if 条件表达式2 {// 条件2为true时执行的代码
} else {// 所有条件都为false时执行的代码
}

示例:

if score >= 90 {fmt.Println("优秀")
} else if score >= 80 {fmt.Println("良好")
} else if score >= 60 {fmt.Println("及格")
} else {fmt.Println("不及格")
}

2. 特殊用法

2.1. 在if条件前执行简单语句

Go语言的if语句支持在条件表达式前执行一个简单的语句,通常是短变量声明,该语句声明的变量作用域仅限于if语句块内。

if 简单语句; 条件表达式 {// 代码块
}

示例:

if x := getValue(); x > 10 {fmt.Println("x大于10")
} else {fmt.Println("x值为", x)
}
// 这里不能访问x

2.2. 嵌套if语句

if语句可以嵌套使用:

if 条件1 {if 条件2 {// 代码块}
}

示例:

if x > 10 {if y > 20 {fmt.Println("x>10且y>20")}
}

3. 注意事项

1. 条件表达式不需要括号:Go语言的if条件表达式不需要用括号括起来,但代码块的花括号是必须的;

2. 花括号位置:Go语言要求if和else后面的花括号必须与条件表达式在同一行。例如:

if x > 10 {// 正确
}if x > 10 
{ // 错误,会编译失败
}

3. else必须与if的右花括号同行:

if x > 10 {// 代码
} else { // else必须这样写// 代码
}

4. 零值判断:在Go中,可以直接使用变量作为条件,它会自动判断是否为该类型的零值:

var s string
if s { // 相当于 if s != ""// ...
}var n int
if n { // 相当于 if n != 0// ...
}

相关文章:

Go语言中的if else控制语句

if else是Go语言中最基础也最常用的条件控制语句,用于根据条件执行不同的代码块。下面我将详细介绍Go语言中if else的各种用法和特性。 1. 基本语法 1.1. 最简单的if语句 if 条件表达式 {// 条件为true时执行的代码 } 示例: if x > 10 {fmt.Prin…...

【PCIe总线】-- inbound、outbound配置

PCI、PCIe相关知识整理汇总 【PCIe总线】 -- PCI、PCIe相关实现 由之前的PCIe基础知识可知,pcie的组成有:RC(根节点)、siwtch(pcie桥)、EP(设备)。 RC和EP,以及EP和EP能…...

分布式锁实战:Redisson vs. Redis 原生指令的性能对比

分布式锁实战:Redisson vs. Redis 原生指令的性能对比 引言 在DIY主题模板系统中,用户可自定义聊天室的背景、图标、动画等元素。当多个运营人员或用户同时修改同一模板时,若没有锁机制,可能出现“甲修改了背景色,乙…...

MyBatis中foreach集合用法详解

在 MyBatis 中&#xff0c;<foreach> 标签用于遍历集合&#xff08;Collection、List、Array、Map&#xff09;&#xff0c;常用于构建动态 SQL 语句&#xff08;如 IN 查询、批量插入等&#xff09;。以下是详细用法和示例&#xff1a; 核心属性 属性描述collection必填…...

react+taro 开发第五个小程序,解决拼音的学习

1.找一个文件夹 cmd 2.taro init 3.vscode 找开该文件夹cd help-letters 如&#xff1a;我的是(base) PS D:\react\help-letters> pnpm install 4.先编译一下吧。看下开发者工具什么反应。 pnpm dev:weapp 5.开始规则。我用cursor就是不成功。是不是要在这边差不多了&…...

高防IP可以防护什么攻击类型?企业网络安全的第一道防线

“高防IP”成为企业构建网络安全防护体系的重要一环。尤其是对于金融、电商、游戏、政务等业务高度依赖网络稳定性的行业而言&#xff0c;确保系统724小时正常运行已经成为基本要求。高防IP到底可以防护哪些攻击类型&#xff1f;它又是如何帮助企业抵御风险、保障服务稳定运行的…...

Wireshark使用教程(含安装包和安装教程)

Wireshark使用入门教程 0.资源下载以及软件安装1.Wireshark中无法显示网卡列表2.Wireshark抓取H264过程 0.资源下载以及软件安装 参考blog: 抓包神器wireshark安装保姆级教程   压缩包下载&#xff1a;Wireshark安装包 1.Wireshark中无法显示网卡列表 Wireshark中无法显示网…...

Asp.Net Core基于StackExchange Redis 缓存

NuGet安装 StackExchange.Redis Microsoft.Extensions.Options 0. appsettings.json初始化配置 {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHos…...

【Linux】SSH:免密登录

配置 SSH 的免密登录&#xff08;基于公钥认证&#xff09;可实现无需输入密码即可登录远程主机&#xff0c;常用于自动化脚本、服务器集群、DevOps 等场景。 生成本地 SSH 密钥对&#xff08;若尚未存在&#xff09; 在本地客户端执行&#xff1a; ssh-keygen -t rsa -b 409…...

kafka(windows)

目录 介绍 下载 配置 测试 介绍 Kafka是一个分布式流媒体平台&#xff0c;类似于消息队列或企业信息传递系统。 下载 Kafka对于Zookeeper是强依赖&#xff0c;所以安装Kafka之前必须先安装zookeeper 官网&#xff1a;Apache Kafka 下载此安装包并解压 配置 新建log…...

深度学习习题3

1.训练神经网络过程中&#xff0c;损失函数在一些时期&#xff08;Epoch&#xff09;不再减小, 原因可能是&#xff1a; 1.学习率太低 2.正则参数太大 3.卡在了局部最小值 A1 and 2 B. 2 and 3 C. 1 and 3 D. 都是 2.对于分类任务&#xff0c;我们不是将神经网络中的随机权重…...

勒让德多项式

勒让德多项式 (Legendre) 当区间为 [ − 1 , 1 ] [-1,1] [−1,1]&#xff0c;权函数 ρ ( x ) 1 ρ(x)1 ρ(x)1时&#xff0c;由 1 , x , . . . , x n , . . . {1,x,...,x^n,...} 1,x,...,xn,...正交化得到的多项式称为勒让德多项式&#xff0c;并用 P 0 ( x ) , P 1 ( x ) ,…...

atc abc409E

原题链接&#xff1a;E - Pair Annihilation 题目背景&#xff1a; n 个点 n - 1 条边的有权无向图&#xff0c;每个点都有一个值&#xff0c;两个连通的点的值可以互相抵消&#xff0c;既将u 的 -1 传给 v 时可以抵消掉 v 的 1 并花费边权值&#xff1b;求最小花费。 考察算…...

Mysql批处理写入数据库

在学习mybatisPlus时&#xff0c;看到一个原本没用过的参数&#xff1a; rewriteBatchedStatementstrue 将上述代码装入jdbc的url中即可使数据库启用批处理写入。 需要注意的是&#xff0c;这个参数仅适用于MySQL JDBC 驱动的私有扩展参数。 作用原理是&#xff1a; 原本的…...

基于安卓的文件管理器程序开发研究源码数据库文档

摘 要 伴随着现代科技的发展潮流&#xff0c;移动互联网技术快速发展&#xff0c;各种基于通信技术的移动终端设备做的也越来越好了&#xff0c;现代智能手机大量的进入到了我们的生活中。电子产品的各种软硬技术技术的发展&#xff0c;操作系统的不断更新换代&#xff0c;谷歌…...

EMC VNXe 存储系统日志收集方法

写在前面 有朋友找来看看VNXe的故障&#xff0c;这种问题总是要收集日志&#xff0c;顺便这里也分享给大家。 注意&#xff0c;VNXe和VNX 属于完全不同的产品&#xff0c;不要看名字很类似&#xff0c;操作系统已经完全重构了&#xff0c;如果说是否有联系&#xff0c;大概就…...

嵌入式链表操作原理详解

嵌入式链表操作原理详解 链表是嵌入式软件开发中最基础的数据结构之一&#xff0c;其设计采用嵌入式链表节点的思想&#xff0c;实现了高度通用的链表管理机制。以下是核心原理和操作的全面解析&#xff1a; 一、基础数据结构 struct list_head {struct list_head *next, *pr…...

从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态

离境退税新政核心内容与外贸企业影响 &#xff08;一&#xff09;政策核心变化解析 退税商店网络扩容 新政明确鼓励在大型商圈、旅游景区、交通枢纽等境外旅客聚集地增设退税商店&#xff0c;并放宽备案条件至纳税信用M级企业。以上海为例&#xff0c;静安区计划新增1000家退…...

一.设计模式的基本概念

一.核心概念 对软件设计中重复出现问题的成熟解决方案&#xff0c;提供代码可重用性、可维护性和扩展性保障。核心原则包括: 1.1. 单一职责原则‌ ‌定义‌&#xff1a;一个类只承担一个职责&#xff0c;避免因职责过多导致的代码耦合。 1.2. 开闭原则‌ ‌定义‌&#xf…...

以人类演示视频为提示,学习可泛化的机器人策略

25年5月来自清华大学、上海姚期智研究院和星动纪元&#xff08;RoboEra&#xff09;公司的论文“Learning Generalizable Robot Policy with Human Demonstration Video as a Prompt”。 最近的机器人学习方法通​​常依赖于从通过遥操作收集的大量机器人数据集中进行模仿学习…...

split方法

在编程中&#xff0c;split 方法通常用于将字符串按照指定的分隔符拆分成多个部分&#xff0c;并返回一个包含拆分结果的列表&#xff08;或数组&#xff09;。不同编程语言中的 split 方法语法略有不同&#xff0c;但核心功能相似。以下是常见语言中的用法&#xff1a; ​1. P…...

SOC-ESP32S3部分:36-适配自己的板卡

飞书文档https://x509p6c8to.feishu.cn/wiki/RP4UwPrsKi4xuQkKLAAcKxD3n1b 如果你自己画了PCB板&#xff0c;需要把自己绘制的板卡配置小智AI工程&#xff0c;可以参考此文档。 下载源码 克隆或下载源码到本地&#xff0c;这里以1.5.5为例&#xff0c;大家可以自行修改其它版…...

LLMs 系列科普文(8)

八、模型的自我认知 接下来我们聊聊另一种问题&#xff0c;即模型的自我认知。 网上经常经常可以看到人们会问大语言模型一些关于认知方面的问题&#xff0c;比如“你是什么模型&#xff1f;谁创造了你&#xff1f;” 说实话&#xff0c;其实这个问题有点无厘头。 之所以这么…...

【明日方舟 × 红黑树】干员调度如何不掉线?算法工程的平衡魔法全揭秘!

【明日方舟 红黑树】干员调度如何不掉线&#xff1f;算法工程的平衡魔法全揭秘&#xff01; 作者&#xff1a;星之辰 标签&#xff1a;#红黑树 #明日方舟 #工程平衡树 #算法科普 #动态数据结构 引子&#xff1a;为什么你的干员调度能实时平衡&#xff0c;从不崩盘&#xff1f;…...

Vue3 + Vite 中使用 Lodash-es 的防抖 debounce 详解

Vue3 Vite 中使用 Lodash-es 的防抖(debounce)详解 在 Vue3 Vite 项目中&#xff0c;debounce 是 lodash-es 中最常用的功能之一&#xff0c;它可以帮助我们优化高频事件的处理。下面我将详细讲解 debounce 的使用方法&#xff0c;并提供一个完整的示例。 Debounce 核心概念…...

机器学习基础相关问题

机器学习相关的基础问题 K-means是否一定会收敛 K-means是否一定会收敛 K-means算法在有限步数内一定会收敛&#xff0c;但收敛到的可能是局部最优解而非全局最优解。以下是详细分析&#xff1a; K-means 的优化目标是最小化 样本到其所归属簇中心的距离平方和&#xff08;SSE…...

验证负载均衡与弹性伸缩

什么是弹性伸缩&#xff08;Auto Scaling&#xff09;&#xff1f; 弹性伸缩是指 云计算平台根据实时负载自动调整计算资源&#xff08;如服务器实例、容器Pod&#xff09;数量&#xff0c;以确保系统在高峰时保持稳定&#xff0c;在低谷时节省成本。 什么时候会触发弹性伸缩&…...

Three.js中AR实现详解并详细介绍基于图像标记模式AR生成的详细步骤

文档地址 Three.js中AR实现详解 以下是Three.js中实现AR功能的详细解析&#xff0c;涵盖技术原理、实现步骤、核心组件及优化策略&#xff1a; &#x1f9e9; 一、技术基础 AR.js框架的核心作用 AR.js是Three.js实现AR的基石&#xff0c;提供以下核心能力&#xff1a; 多模…...

CSS高级技巧及新增属性

CSS高级技巧及新增属性 jarringslee 文章目录 CSS高级技巧及新增属性精灵图 Sprite字体图标 iconfontCSS几何图形的写法更改鼠标样式更改表单轮廓取消文本域的拖拽行内块元素的垂直居中对齐溢出文字处理 CSS布局技巧CSS5新增内容及其他属性新增选择器新增基础属性及其他属性ca…...

GeoBoundaries下载行政区划边界数据(提供中国资源shapefile)

要下载山东省济南市各个区的行政区划边界数据&#xff0c;你可以通过 geoBoundaries 提供的数据来实现。下面是详细步骤&#xff0c;包括网页操作和可选的 Python 自动化方式。 目录 ✅ 一、通过 geoBoundaries 官网手动下载1. 打开官网&#xff1a;2. 查找中国数据&#xff1a…...