详细介绍:go语言学习 第4章:流程控制

news/2025/10/7 11:34:51/文章来源:https://www.cnblogs.com/wzzkaifa/p/19128303

第4章:流程控制

在编程中,流程控制语句是控制程序执行顺序的关键工具。它们允许我们根据不同的条件执行不同的代码块,从而实现复杂的逻辑。Go语言提供了多种流程控制语句,包括条件语句(ifswitch)和循环语句(forrange)。本章将详细介绍这些流程控制语句的使用方法和注意事项。

一、条件语句

(一)if语句

if语句是最基本的条件语句,用于根据条件表达式的值决定是否执行某个代码块。在Go语言中,if语句的语法如下:

if 条件表达式 {
// 逻辑代码
}
1. 单分支if

单分支if语句只有在条件表达式为true时才会执行代码块。例如:

package main
import "fmt"
func main(
) {
var count int = 20
if count <
30 {
fmt.Println("库存不足"
)
}
}

在这个例子中,如果count小于30,程序会输出“库存不足”。

2. 双分支if

双分支if语句在条件表达式为true时执行一个代码块,否则执行另一个代码块。语法如下:

if 条件表达式 {
// 逻辑代码1
}
else {
// 逻辑代码2
}

例如:

package main
import "fmt"
func main(
) {
var count int = 70
if count <
30 {
fmt.Println("库存不足"
)
}
else {
fmt.Println("库存充足"
)
}
}

在这个例子中,如果count小于30,程序会输出“库存不足”,否则输出“库存充足”。

3. 多分支if

多分支if语句通过多个else if子句来处理多个条件。语法如下:

if 条件表达式1 {
// 逻辑代码1
}
else
if 条件表达式2 {
// 逻辑代码2
}
else {
// 逻辑代码n
}

例如:

package main
import "fmt"
func main(
) {
var score int = 85
if score >= 90 {
fmt.Println("您的成绩为A级别"
)
}
else
if score >= 80 {
fmt.Println("您的成绩为B级别"
)
}
else
if score >= 70 {
fmt.Println("您的成绩为C级别"
)
}
else
if score >= 60 {
fmt.Println("您的成绩为D级别"
)
}
else {
fmt.Println("您的成绩为E级别"
)
}
}

在这个例子中,程序会根据score的值输出相应的成绩级别。

(二)switch语句

switch语句用于根据不同的值选择执行不同的代码块。它比多个if语句更简洁,也更容易阅读。switch语句的语法如下:

switch 表达式 {
case1:
// 语句块1
case2:
// 语句块2
...
default:
// 默认语句块
}
1. 基本用法

例如:

package main
import "fmt"
func main(
) {
var score int = 85
switch score / 10 {
case 10:
fmt.Println("您的等级为A级"
)
case 9:
fmt.Println("您的等级为A级"
)
case 8:
fmt.Println("您的等级为B级"
)
case 7:
fmt.Println("您的等级为C级"
)
case 6:
fmt.Println("您的等级为D级"
)
default:
fmt.Println("您的等级为E级"
)
}
}

在这个例子中,程序会根据score的值输出相应的成绩级别。

2. 特殊用法
  • 省略表达式switch语句可以不带表达式,直接作为if语句的替代品。
package main
import "fmt"
func main(
) {
var score int = 85
switch {
case score >= 90:
fmt.Println("您的成绩为A级别"
)
case score >= 80:
fmt.Println("您的成绩为B级别"
)
case score >= 70:
fmt.Println("您的成绩为C级别"
)
case score >= 60:
fmt.Println("您的成绩为D级别"
)
default:
fmt.Println("您的成绩为E级别"
)
}
}
  • fallthrough关键字fallthrough关键字可以用来实现switch语句的穿透,即执行完当前case后继续执行下一个case
package main
import "fmt"
func main(
) {
var score int = 85
switch score / 10 {
case 10:
fmt.Println("您的等级为A级"
)
fallthrough
case 9:
fmt.Println("您的等级为A级"
)
fallthrough
case 8:
fmt.Println("您的等级为B级"
)
}
}

二、循环语句

(一)for循环

for循环是Go语言中最基本的循环语句,用于重复执行某个代码块。for循环的语法如下:

for 初始表达式; 布尔表达式; 迭代因子 {
// 循环体
}
1. 基本用法

例如:

package main
import "fmt"
func main(
) {
sum := 0
for i := 1
; i <= 5
; i++ {
sum += i
}
fmt.Println("1到5的和为:"
, sum)
}

在这个例子中,程序会计算1到5的和,并输出结果。

2. 无限循环

如果省略for循环的条件表达式,可以创建一个无限循环。例如:

package main
import "fmt"
func main(
) {
for {
fmt.Println("这是一个无限循环"
)
break // 使用break语句退出循环
}
}
3. 灵活的for循环

for循环的初始表达式和迭代因子可以省略,使其更加灵活。例如:

package main
import "fmt"
func main(
) {
i := 1
for i <= 5 {
fmt.Println(i)
i++
}
}

(二)for-range循环

for-range循环是Go语言中用于遍历集合(如数组、切片、字符串、映射等)的专用循环语句。语法如下:

for key, value :=
range collection {
// 循环体
}
1. 遍历数组和切片

例如:

package main
import "fmt"
func main(
) {
arr := [5]int{
1
, 2
, 3
, 4
, 5
}
for index, value :=
range arr {
fmt.Printf("索引:%d, 值:%d\n"
, index, value)
}
}
2. 遍历字符串

例如:

package main
import "fmt"
func main(
) {
str := "hello, Golang!"
for index, runeValue :=
range str {
fmt.Printf("索引:%d, 字符:%c\n"
, index, runeValue)
}
}
3. 遍历映射

例如:

package main
import "fmt"
func main(
) {
m :=
map[string]int{
"a": 1
, "b": 2
, "c": 3
}
for key, value :=
range m {
fmt.Printf("键:%s, 值:%d\n"
, key, value)
}
}

三、循环控制语句

(一)break语句

break语句用于终止循环的执行。例如:

package main
import "fmt"
func main(
) {
for i := 1
; i <= 10
; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
}

在这个例子中,当i等于5时,循环会终止。

(二)continue语句

continue语句用于跳过当前循环的剩余部分,直接进入下一次迭代。例如:

package main
import "fmt"
func main(
) {
for i := 1
; i <= 10
; i++ {
if i%2 == 0 {
continue
}
fmt.Println(i

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

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

相关文章

学号20232328 2025-2026-1 《网络与系统攻防技术》实验一实验报告

1.实验内容 1.1NOP, JNE, JE, JMP, CMP汇编指令的机器码: 1.1.1NOP(No Operation) 功能:NOP指令是一条空操作指令,它不做任何事情。执行NOP指令时,处理器的状态(如寄存器值、内存内容等)不会发生变化,只是简单…

《一元微积分》讲义习题

习题 \(1.1\): 第 \(1\) 题: \(1.1.7\):\(\N\) 上的加法是对乘法满足分配律:即对任意 \(m,n,k\in\N\),\((m+n)\cdot k=m\cdot k+n\cdot k\)。 证明:对 \(k\) 做数学归纳。 令 \(A=\{k\in\N|\forall m,n\in \N,(m…

【光照】Unity[光照探针]的作用与工作原理

光照探针是Unity中解决动态物体间接光照的核心技术,通过预计算存储空间光照信息,使动态物体获得与静态环境一致的照明效果。UnityURP中的光照探针技术经历了从手动放置到自适应探针体积(APV)的演进,APV能自动根据场…

[数学 - 线性回归]

简单说就是方程曲线 您提到的回归方程(Regression Equation)是统计学中一个极其强大和基础的工具,特别是在金融和量化分析中,它几乎无处不在。 它的本质是为了解决一个核心问题:如何量化不同事物之间的关系?1. 回…

251007

目录JT-JY7T3S1-1JT-JY7T3S1-2FT-(TED&VOAs) JT-JY7T3S1-1Oh, good morning, Is this a room number 26? Yes, thats right. So is this the students job center? it certainly is, how can i help you? Well,…

Java 并发锁

1 为什么要加锁 所先JVM将内存划分成2个区域主内存:所有线程共享的内存区域,存储所有的共享变量 工作内存:每个线程独有的内存区域,存储该线程使用到的共享变量的副本线程对变量的操作(读取、赋值)必须在工作内存完…

做插画的网站网上购物哪个商城好

&#xff3b;导读&#xff3d;Kaggle 的房价预测竞赛从 2016 年 8 月开始&#xff0c;到 2017 年 2 月结束。这段时间内&#xff0c;超过 2000 多人参与比赛&#xff0c;选手采用高级回归技术&#xff0c;基于我们给出的 79 个特征&#xff0c;对房屋的售价进行了准确的预测。今…

实用指南:点评中是如何实现短信登录的

实用指南:点评中是如何实现短信登录的pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

[数学 - 方差 标准差 ]

假设和平均距离 比如两个人的射击成绩,我们要挑选一个“更加稳定”的选手:平均值相同时:假设样本数据是 \(x_1, x_2, \dots, x_n\) \(\bar{x}\) 表示这组数据的平均数。 所以,样本数据到 \(\bar{x}\) 的“平均距离…

黄南州wap网站建设公司代理ip大全

数据库请求接口封装 uniapp中提供了plus.sqlite接口&#xff0c;在这里我们对常用的数据库请求操作进行了二次封装 这里的dbName、dbPath、recordsTable 可以根据你的需求自己命名 module.exports {/** * type {String} 数据库名称*/dbName: salary,/*** 数据库地址* type {…

鄢陵县北京网站建设长沙网站制作工作室

需求&#xff1a;页面跳转到目标页面之后&#xff0c;对应的顶部路由高亮 上面的更多 跳转到 学情分析下面的学生分析 <template><div class"topBar" ref"topBar" v-loading.fullscreen.lock"fullscreenLoading"><div class&quo…

二分法算法技巧-思维提升 - 教程

二分法算法技巧-思维提升 - 教程2025-10-07 11:08 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !import…

开源量子模拟引擎:Quantum ESPRESSO本地部署教程,第一性原理计算轻松入门! - 实践

开源量子模拟引擎:Quantum ESPRESSO本地部署教程,第一性原理计算轻松入门! - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

基于Python+Vue开发的大学竞赛报名管理系统源码+运行步骤

项目简介该项目是基于Python+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习…

详细介绍:QT常用控件(1)

详细介绍:QT常用控件(1)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", …

网站制作素材绿色商城网站模板

多参数方法的问题相信很多人曾经都写过多参数的构造方法&#xff0c;就像下面示例的代码。当想要创建一个给全部属性赋值的实例的时候&#xff0c;就会利用这个多参数的构造方法。但是&#xff0c;当类的属性特别多的时候&#xff0c;你还会这么写吗&#xff1f;如果你写了一个…

Generate First, Then Sample: Enhancing Fake News Detection with LLM-Augmented Reinforced Sampling

论文阅读1. 任务 如何提高假新闻检测的效果,特别是针对假新闻本身的检测能力 2. 研究背景与问题提出:假新闻指包含虚假信息的新闻,其在社交媒体上的传播对公共卫生、政治等关键社会议题构成严重威胁。现有假新闻检测…

开发电商网站多少钱刷赞网站推广软件

文末下载上传环境源码客户端js检查一般都是在网页上写一段javascript脚本&#xff0c;校验上传文件的后缀名&#xff0c;有白名单形式也有黑名单形式。查看源代码可以看到有如下代码对上传文件类型进行了限制&#xff1a;我们可以看到对上传文件类型进行了限制。绕过方法1.我们…

手机网站网站开发流程开发软件开发

目录 一、常见的压缩包的扩展名 二、常见的压缩和解压指令 1、tar 2、tar gzip&#xff08;.tar.gz&#xff09; (或 .tgz) 3、tar bzip2&#xff08;.tar.bz2&#xff09; 4、zip 5、gzip 6、bzip2 7、xz 8、rar 9、7z 三、安装解压工具 一、常见的压缩包的扩展…

数据大屏

数据大屏 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1…