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// ...
}

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

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

相关文章

[Spring]-AOP

AOP场景 AOP: Aspect Oriented Programming (面向切面编程) OOP: Object Oriented Programming (面向对象编程) 场景设计 设计: 编写一个计算器接口和实现类,提供加减乘除四则运算 需求: 在加减乘除运算的时候需要记录操作日志(运算前参数、运算后结果)实现方案:…

Web3 借贷与清算机制全解析:链上金融的运行逻辑

Web3 借贷与清算机制全解析:链上金融的运行逻辑 超额抵押借款 例如,借款人用ETH为抵押借入DAI;借款人的ETH的价值一定是要超过DAI的价值;借款人可以任意自由的使用自己借出的DAI 稳定币 第一步:借款人需要去提供一定…

RK3588开发笔记-GNSS-RTK模块调试

目录 前言 一、什么是GNSS/RTK 二、硬件连接 三、内核配置 四、模块调试 五、ntripclient使用 总结 前言 在RK3588平台上集成高精度定位功能是许多工业级应用的需求。本文记录了我调试GNSS-RTK模块的全过程,包含硬件连接、驱动移植、数据解析和精度优化等关键环节,希望对…

Vue.js $emit的介绍和简单使用

前言 在 Vue.js 开发中,组件化是核心思想之一。但组件间的通信是一个重要课题,特别是子组件向父组件传递数据的场景。Vue 提供了多种通信方式,而$emit正是实现子→父通信的关键方法。本文将深入解析$emit的原理、使用场景及最佳实践。 一、$e…

【Linux 学习计划】-- 简易版shell编写

目录 思路 创建自己的命令行 获取用户命令 分割命令 检查是否是内建命令 cd命令实现 进程程序替换执行程序 总代码 结语 思路 int main() {while (1){// 1. 自己的命令行PrintCommandLine();// 2. 获取用户命令char command[SIZE];int n GetUserCommand(command, si…

一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)

📄 本地 Windows 部署 Logstash 连接本地 Elasticsearch 指南 ✅ 目标 在本地 Windows 上安装并运行 Logstash配置 Logstash 将数据发送至本地 Elasticsearch测试数据采集与 ES 存储流程 🧰 前提条件 软件版本要求安装说明Java17Oracle JDK 下载 或 O…

Java使用Selenium反爬虫优化方案

当我们爬取大站的时候,就得需要对抗反爬虫机制的场景,因为项目要求使用Java和Selenium。Selenium通常用于模拟用户操作,但效率较低,所以需要我们结合其他技术来实现高效。 在 Java 中使用 Selenium 进行高效反爬虫对抗时&#xff…

状态管理方案对比与决策

1. 状态管理的基本概念 现代前端应用随着功能复杂度提升,状态管理已成为架构设计的核心挑战。状态管理本质上解决的是数据的存储、变更追踪和响应式更新问题,以确保UI与底层数据保持同步。 核心挑战: 状态共享与组件通信可预测的状态变更性能优化与重…

Fetch与Axios:区别、联系、优缺点及使用差异

Fetch与Axios:区别、联系、优缺点及使用差异 文章目录 Fetch与Axios:区别、联系、优缺点及使用差异一、联系二、区别1. 浏览器支持与兼容性2. 响应处理3. 请求拦截和响应拦截4. 错误处理 三、优缺点1. Fetch API优点缺点 2. Axios优点缺点 四、使用上的差…

【Docker】快速入门与项目部署实战

我们在部署一个项目时,会出现一系列问题比如: 命令太多了,记不住软件安装包名字复杂,不知道去哪里找安装和部署步骤复杂,容易出错 其实上述问题不仅仅是新手,即便是运维在安装、部署的时候一样会觉得麻烦…

Java面试题尚硅谷版第1季

1、写出如下代码运行结果 1.1、 使用局部变量表和操作数栈解题 1.2、使用前置和后置递增解题 2、写一个单例模式 2.1、考察知识点 2.2、单例模式实现 3、类加载和初始化顺序 package classload;public class Father {private int i test();private static int j method();st…

关于Qt阻断样式继承的解决办法

引言 在使用 Qt 开发桌面应用时,借助样式表(StyleSheet)来统一定义界面风格是非常常见的做法。通常,你会在主程序中通过 qApp->setStyleSheet(...) 或者直接给某个父控件设置样式表,让所有的子控件都采用相同的配色…

鼠标右键添加新建某种文件的方法

场景 我经常用到.emmx,.eddx文件,电脑上装的是wpsX亿图(因为有wps会员),没有开亿图会员。 然后问题就是,思维导图和流程图我都能正常开,正常编辑,但鼠标右键没有新建这两个文件的按…

Inxpect安全雷达传感器与控制器:动态检测 + 抗干扰技术重构工业安全防护体系

Inxpect 推出工业安全领域新型智能传感器与控制器,其核心产品为雷达扫描仪,具备动态调整检测区域、抗干扰能力强等特点,可精准检测危险区域人员进入或存在情况,适用于移动机器人等场景。 Inxpect安全雷达传感器核心功能 动态检测…

【AI学习】李广密与阶跃星辰首席科学家张祥雨对谈:多模态发展的历史和未来

仔细阅读了文章《专访张祥雨:多模态推理和自主学习是未来的 2 个 「GPT-4」 时刻》 https://mp.weixin.qq.com/s/892QuRPH9uP6zN6dS-HZMw 非常赞叹的一篇文章,说清楚了NLP、CV发展中的许多重大问题,读来醍醐灌顶!这样的文章&…

C++中std::deque详解和实战工程代码示例

C中std::deque详解和实战工程代码示例 std::deque(双端队列)是 C 标准库中的一个序列容器,与 std::vector 类似,但它支持从头部和尾部高效地插入和删除元素。它底层采用分段连续空间实现,兼具灵活性与性能。 一、基本…

【AI大模型入门指南】概念与专有名词详解 (二)

【AI大模型入门指南】概念与专有名词详解 (二) 一 、前言 当你和聊天机器人聊得天花乱坠时,当你用文字让AI生成精美图片时,当手机相册自动帮你分类照片时 —— 这些看似智能的操作背后,都藏着 AI 大模型的身影。 本…

AIStor 的模型上下文协议 (MCP) 服务器:管理功能

在本系列的上一篇博文中,我们讨论了 MinIO AIStor 的模型上下文协议 (MCP) 服务器的基本用户级功能。我们学习了如何使用人类语言命令查看存储桶的内容、分析对象并标记它们以便将来处理,以及如何通过 LLM(例如 Anthropic Claude)…

期权末日轮实值期权盈利未平仓怎么办?

本文主要介绍期权末日轮实值期权盈利未平仓怎么办?期权末日轮实值期权盈利未平仓该怎么办,需要明确几个关键点:末日轮指的是期权到期日临近的时候,通常指最后一周,尤其是最后一天,这时候时间价值衰减很快&a…

C++/Qt 联合编程中的定时器使用陷阱:QObject::startTimer 报错详解

在 Qt 开发中,QTimer 是一个常用的工具类,用于处理定时事件。但不少开发者在 C/Qt 联合编程,尤其是在工具类、静态类、线程中使用定时器时,会遇到如下令人困惑的报错: QObject::startTimer: Timers can only be used …