讲解Golang选择语句
Golang选择语句
- 1. `if` 语句
- 1.1 基本语法
- 1.2 `if-else` 语句
- 1.3 `if-else if-else` 语句
- 1.4 简短声明和初始化
- 1.5 多个条件的逻辑运算
- 2. `switch` 语句
- 2.1 基本语法
- 2.2 示例
- 2.3 `switch` 语句与 `if` 的对比
- 2.4 不指定表达式
- 2.5 `fallthrough` 语句
- 2.6 `case` 支持多个值
- 3. 总结
Go语言中的选择语句主要有两种:if语句和switch语句,它们用于根据条件执行不同的代码块。
1. if 语句
1.1 基本语法
if 语句根据条件表达式的布尔值来决定是否执行某段代码。条件表达式的结果必须是一个布尔值。
if condition {// 如果 condition 为 true,执行这里的代码
}
其中,condition 是一个布尔表达式,可以是任何返回布尔值的表达式。如果表达式结果为 true,就执行大括号 {} 内的代码块;如果结果为 false,则跳过该代码块。
1.2 if-else 语句
如果条件不成立,else 语句将执行。else 是可选的,可以不使用。
x := 7
if x > 10 {fmt.Println("x 大于 10")
} else {fmt.Println("x 小于或等于 10")
}
这里,x 小于等于 10,所以将输出:x 小于或等于 10。
1.3 if-else if-else 语句
当有多个条件需要判断时,可以使用 else if 来处理多个条件。每个 else if 后面都跟一个条件表达式,多个 else if 和 else 语句可以组合在一起进行多分支判断。
x := 15
if x > 20 {fmt.Println("x 大于 20")
} else if x == 15 {fmt.Println("x 等于 15")
} else {fmt.Println("x 小于 15")
}
输出是:x 等于 15,因为 x 等于 15。
1.4 简短声明和初始化
Go 语言的 if 语句支持在条件判断语句中声明和初始化变量。这通常用于减少作用域的范围,避免在函数的其他地方污染变量。
if x := 10; x > 5 {fmt.Println("x 大于 5")
}
在这个例子中,x 被声明并初始化为 10,然后判断 x > 5,因为条件为真,所以打印 x 大于 5。注意 x 的作用域只限于 if 语句块内部。
1.5 多个条件的逻辑运算
我们可以使用 &&(逻辑与)和 ||(逻辑或)在 if 条件中组合多个判断。
x := 7
y := 10
if x > 5 && y < 15 {fmt.Println("x 大于 5 且 y 小于 15")
}if x > 10 || y > 5 {fmt.Println("x 大于 10 或者 y 大于 5")
}
2. switch 语句
switch 语句用于根据不同的条件选择不同的执行路径。它比多个 if-else 语句更简洁,特别是当需要进行多重判断时。
2.1 基本语法
switch expression {
case value1:// 如果 expression == value1,执行此块代码
case value2:// 如果 expression == value2,执行此块代码
default:// 如果没有匹配的值,执行此块代码
}
expression是要检查的表达式,可以是常量、变量、函数调用等。case后面是要与expression比较的值。只有expression的值与某个case的值相等时,才会执行该case对应的代码块。default是可选的,如果没有任何case匹配,执行default的代码。
2.2 示例
day := 3
switch day {
case 1:fmt.Println("星期一")
case 2:fmt.Println("星期二")
case 3:fmt.Println("星期三")
default:fmt.Println("未知的星期")
}
根据 day 的值选择执行不同的代码块。如果 day 为 3,输出 星期三。
2.3 switch 语句与 if 的对比
switch 在多个条件判断时通常比多个 if-else 更清晰。例如,下面的 if-else 语句可以用 switch 改写得更简洁:
x := 10
if x == 1 {fmt.Println("x 等于 1")
} else if x == 2 {fmt.Println("x 等于 2")
} else if x == 3 {fmt.Println("x 等于 3")
} else {fmt.Println("x 不是 1、2 或 3")
}
可以用 switch 改写成:
switch x {
case 1:fmt.Println("x 等于 1")
case 2:fmt.Println("x 等于 2")
case 3:fmt.Println("x 等于 3")
default:fmt.Println("x 不是 1、2 或 3")
}
2.4 不指定表达式
如果 switch 后面不指定表达式,Go 会默认每个 case 与 true 进行比较。这意味着所有的 case 都是布尔表达式。
x := 10
switch {
case x > 5:fmt.Println("x 大于 5")
case x == 10:fmt.Println("x 等于 10")
default:fmt.Println("x 小于 5")
}
这个例子相当于多个 if-else 语句,首先判断 x > 5 是否为真,然后判断 x == 10 是否为真。
2.5 fallthrough 语句
Go 的 switch 语句在匹配一个 case 后默认会终止,不会继续执行下面的 case。如果希望继续执行下一个 case,需要使用 fallthrough 语句。
switch day := 2; day {
case 1:fmt.Println("星期一")fallthrough
case 2:fmt.Println("星期二")fallthrough
case 3:fmt.Println("星期三")
}
在这个例子中,不管 day 是 1、2 还是 3,都会依次打印出所有的匹配项。注意,fallthrough 会强制跳过条件判断,继续执行下一个 case。
2.6 case 支持多个值
Go 的 case 支持用逗号分隔多个值进行匹配,相当于多个条件判断。
x := 2
switch x {
case 1, 2, 3:fmt.Println("x 是 1、2 或 3")
default:fmt.Println("x 不是 1、2 或 3")
}
这里,case 1, 2, 3 等价于 case 1: case 2: case 3:,所以会输出 x 是 1、2 或 3。
3. 总结
if语句:适用于少数条件判断。通过简单的布尔判断或else if可以实现多重条件判断。switch语句:适用于多个条件判断,特别是当需要对多个常量或变量进行匹配时。switch语句的可读性高,避免了多个if-else的繁琐和混乱。fallthrough:允许在匹配到某个case后继续执行下一个case,这是 Go 语言switch特有的特性。switch无表达式:可以像一系列if-else语句一样工作,不需要指定一个常量表达式。
相关文章:
讲解Golang选择语句
Golang选择语句 1. if 语句1.1 基本语法1.2 if-else 语句1.3 if-else if-else 语句1.4 简短声明和初始化1.5 多个条件的逻辑运算 2. switch 语句2.1 基本语法2.2 示例2.3 switch 语句与 if 的对比2.4 不指定表达式2.5 fallthrough 语句2.6 case 支持多个值 3. 总结 Go语言中的选…...
练习LabVIEW第四十一题
学习目标: 编写一个程序测试自己在程序前面板上输入一段文字“CSDN是一个优秀的网站”所用的时间。 开始编写: 前面板放置一个数值显示控件,程序框图添加顺序结构共三帧,第一帧放一个获取日期/时间(秒)函…...
应对AI与机器学习的安全与授权管理新挑战,CodeMeter不断创新引领保护方案
人工智能(AI)和机器学习(ML)技术正在快速发展,逐渐应用到全球各类主流系统、设备及关键应用场景中,尤其是在政府、商业和工业组织不断加深互联的情况下,AI和ML技术的影响日益广泛。虽然AI技术的…...
【2024最新版Kotlin教程】Kotlin第一行代码系列第五课-类继承,抽象类,接口
【2024最新版Kotlin教程】Kotlin第一行代码系列第五课-类继承,抽象类,接口 为什么要有继承呢,现实中也是有继承的,对吧,你继承你爸的遗产,比如你爸建好了一个房子,儿子继承爸,就得了…...
虚拟现实和增强现实技术,如何打造沉浸式体验?
内容概要 在这个科技飞速发展的时代,虚拟现实(VR)与增强现实(AR)技术的结合就像调皮的小精灵,一下子把我们的生活变得神奇又有趣。想象一下,你正在游戏中与精灵搏斗,突然间身边的客…...
ChatGPT任务设计和微调策略的优化
目录 ChatGPT任务设计和微调策略的优化 一、GPT-3的基础 二、任务设计和微调策略的优化 三、基于人类反馈的强化学习(RLHF) 举例 完全注意力机制的自回归解码器网络 一、定义与原理 二、举例说明 ChatGPT任务设计和微调策略的优化 ChatGPT确实是从GPT-3开始,通过任…...
通过 SSH 连接远程 Ubuntu 服务器
目录 安装 SSH 服务器允许 SSH 通过防火墙远程 SSH 连接(选)重启向日葵 安装 SSH 服务器 更新软件包列表 sudo apt update安装 OpenSSH 服务器 sudo apt install openssh-server检查 SSH 服务器状态 sudo systemctl status ssh如果 SSH 服务器正在运…...
Perl 环境安装
Perl 环境安装 Perl 是一种广泛使用的高级、通用、解释型、动态编程语言。它最初由 Larry Wall 在 1987 年设计,现在由 Perl 5 和 Perl 6 两个主要版本组成。Perl 适合于多种编程任务,包括系统管理、Web 开发、网络编程、游戏开发等。在开始使用 Perl 进行编程之前,您需要在…...
【NOIP提高组】引水入城
【NOIP提高组】引水入城 💐The Begin💐点点关注,收藏不迷路💐 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政 区划十分特殊,刚好构成一个N行M列的矩形ÿ…...
openvino python推理demo
openvino python推理demo import openvino from openvino.runtime import Core import numpy as np import argparse import hashlib import os import ioclass OpenvinoInfer:def __init__(self,device_id0):self.device_iddevice_idself.ie Core()self.available_devices …...
JavaWeb项目-----博客系统
一.设计数据库 1.创建数据库 create database if not exists java108_blog_system character set utf8; drop table if exists user; drop table if exists blog;2.创建博客列表 create table blog(blogId int primary key auto_increment,title varchar(20),content varcha…...
GY-56 (VL53L0X) 激光测距
文章目录 一、GY-56 简介二、引脚功能三、通信协议1.串口协议: 当 GY-56 PS 焊点开放时候使用(默认)(1)串口通信参数(默认波特率值 9600bps)(2)模块输出格式,每帧包含 8-13 个字节&a…...
当今陪玩系统小程序趋势,陪玩系统源码搭建后的适用于哪些平台
一、市场规模持续扩大 随着全球游戏市场的不断膨胀,游戏陪玩行业正逐渐从一个新兴领域成长为游戏产业链中不可或缺的一环。据《2024年1~6月中国游戏产业报告》显示,今年上半年,国内游戏市场实际销售收入达到1472.67亿元,同比增长…...
qt QListWidget详解
1、概述 QListWidget 是 Qt 框架中的一个类,它提供了一个基于模型的视图,用于显示项目的列表。QListWidget 继承自 QAbstractItemView 并为项目列表提供了一个直观的接口。与 QTreeView 和 QTableView 不同,QListWidget 是专门为单行或多行项…...
java ssm 校园快递物流平台 校园快递管理系统 物流管理 源码 jsp
一、项目简介 本项目是一套基于SSM的校园快递物流平台,主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具等。 项目都经过严格调试,确保可以运行! 二、技术实现 后端技术&#x…...
西安电子科技大学考研网报审核通过了,然后呢?
报考西安电子科技大学的宝贝们,考研网上确认已经截止的同学们,不用担心! 最近,有很多同学问到一个问题:网上确认时看到有消息说禁止使用海马体照片,但我明明用了海马体的照片,审核却通过了&…...
pandas习题 051:将字符串数据读取到 DataFrame
编码题)有以下逗号隔开和空格隔开的字符串数据,如何将它读取为 DataFrame ? data = ‘’’ a,b,c 1,3,4 2,4,5 ‘’’ data2 = ‘’’ a b c 1 13 214 2 4 15 ‘’’ Python 代码如下:import pandas as pd import iodata = a,b,c 1,3,4 2,4,5 df = pd.read_csv(io.Stri…...
改进探路者算法复现
本文所涉及所有资源均在 传知代码平台 可获取。 目录 一、背景及意义介绍 (一)背景 ...
PostgreSQL 学习笔记:PostgreSQL 主从复制
PostgreSQL 笔记:PostgreSQL 主从复制 博客地址:TMDOG 的博客 在现代应用程序中,数据库的高可用性和扩展性是至关重要的。PostgreSQL 提供了主从复制功能,可以在多个数据库实例之间复制数据,以实现冗余和负载均衡。本…...
【系统架构设计师(第2版)】十一、未来信息综合技术
未来信息综合技术是指近年来新技术发展而提出的一些新概念、新知识、新产品,主要包括信息物理系统(CPS)、人工智能(AI)、机器人、边缘计算、数字孪生、云计算和大数据等技术。这些技术涉及多学科、多领域,具…...
价值投资中的智能城市废水处理与再利用系统分析
价值投资中的智能城市废水处理与再利用系统分析 关键词:价值投资、智能城市、废水处理、废水再利用、系统分析 摘要:本文聚焦于价值投资视角下的智能城市废水处理与再利用系统。首先介绍了研究的背景,包括目的、预期读者、文档结构和相关术语。接着阐述了智能城市废水处理与…...
颠覆原神体验:Snap Hutao智能助手如何重构你的游戏效率
颠覆原神体验:Snap Hutao智能助手如何重构你的游戏效率 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 🧰 / Multifunctional Open-Source Genshin Impact Toolkit 🧰 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.Hu…...
如何用Sunshine打造你的终极游戏串流服务器:从零开始的完整指南
如何用Sunshine打造你的终极游戏串流服务器:从零开始的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏大作吗?Sunshin…...
RePKG终极指南:Wallpaper Engine资源提取与转换的完整解决方案
RePKG终极指南:Wallpaper Engine资源提取与转换的完整解决方案 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经遇到过这样的问题?在Wallpaper Eng…...
Pixel Aurora Engine效果展示:像素极光视觉系统渲染的星际战舰系列
Pixel Aurora Engine效果展示:像素极光视觉系统渲染的星际战舰系列 1. 像素极光引擎简介 Pixel Aurora Engine是一款基于AI扩散模型的高端绘图工作站,专为像素艺术创作而设计。它采用独特的复古像素游戏风格界面,通过先进的AI技术将文字描述…...
Flutter项目卡在‘assembleDebug’?Gradle配置优化全攻略
1. 为什么Flutter项目会卡在assembleDebug阶段? 这个问题困扰过无数Flutter开发者,尤其是刚入门的新手。当你满怀期待地运行flutter run命令,结果控制台卡在Running Gradle task assembleDebug...一动不动,那种感觉就像等一辆永远…...
cas:1644644-96-1,甲基四嗪-琥珀酰亚胺酯,Methyltetrazine-NHS ester的应用
Methyltetrazine-NHS ester 是一种结合了甲基四嗪基团和N-羟基琥珀酰亚胺(NHS)活性酯的化合物,具有独特的化学性质和广泛的应用价值。一、基本信息中文名称:甲基四嗪-NHS酯(或甲基四嗪-琥珀酰亚胺酯)英文名…...
UniApp跨平台开发入门:用现有Vue代码快速生成小程序/App(2023最新版)
UniApp跨平台开发实战:2023年Vue代码高效迁移指南 移动互联网时代,开发者常面临一个核心挑战:如何用最小成本将Web应用扩展到移动端。如果你手头已有成熟的Vue项目,UniApp可能是最经济的跨平台解决方案——它允许你复用80%以上的现…...
Blender 3MF插件技术解析与进阶指南:从格式原理到工业级应用
Blender 3MF插件技术解析与进阶指南:从格式原理到工业级应用 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender 3MF插件是连接开源3D创作与工业级3D打印…...
Pylint魔法方法验证:10个技巧确保特殊方法符合Python规范的终极指南
Pylint魔法方法验证:10个技巧确保特殊方法符合Python规范的终极指南 【免费下载链接】pylint Its not just a linter that annoys you! 项目地址: https://gitcode.com/gh_mirrors/pyl/pylint Python开发者们,你是否曾为魔法方法(dund…...
