讲解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)、机器人、边缘计算、数字孪生、云计算和大数据等技术。这些技术涉及多学科、多领域,具…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
