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

15分钟学Go 第8天:控制结构 - 循环

第8天:控制结构 - 循环

在Go语言中,循环是一种基本的控制结构,用于重复执行一段代码。今天我们将深入了解Go语言中的for循环,包括它的各种用法、语法结构、以及如何在实践中有效地应用循环。

1. for 循环的基本概念

for循环是Go语言中唯一的循环结构,功能强大且灵活。它可以用于执行代码块多次,直到满足特定条件为止。

1.1 for 循环的基本结构

for循环的基本语法结构如下:

for initialization; condition; post {// 循环体代码
}
  • initialization: 初始化语句,在循环开始前执行一次。
  • condition: 循环条件,只有当该条件为true时,循环才会继续执行。
  • post: 每次循环结束后执行的语句,通常用于更新计数器。

1.2 示例代码

下面是一个使用for循环打印数字1到10的简单示例。

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

1.3 代码执行流程图

Yes
No
开始
初始化 i=1
判断 i <= 10
输出 i
更新 i=i+1
结束

2. for 循环的其他用法

Go语言的for循环不仅限于一种形式,以下是几种常见的用法。

2.1 经典的for 循环

上面的示例已经展示了经典的for循环。除了这种形式外,Go语言还有一些变种。

2.2 只使用条件的for 循环

可以省略初始化和后缀语句,仅使用条件,形成无限循环。

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

2.3 无限循环

如果只写for而没有任何条件,就形成了一个无限循环。

package mainimport "fmt"func main() {i := 1for {if i > 10 {break // 退出循环}fmt.Println(i)i++}
}

2.4 代码执行流程图

No
Yes
开始
初始化 i=1
判断 i > 10
输出 i
更新 i=i+1
结束

3. 嵌套循环

程序中可以将一个for循环嵌套在另一个for循环内部。嵌套循环可以用来处理多维数据结构。

3.1 示例代码

以下示例展示了如何使用嵌套循环打印乘法表。

package mainimport "fmt"func main() {for i := 1; i <= 9; i++ {for j := 1; j <= 9; j++ {fmt.Printf("%d x %d = %d\t", i, j, i*j)}fmt.Println()}
}

3.2 代码执行流程图

Yes
Yes
No
No
开始
初始化 i=1
判断 i <= 9
初始化 j=1
判断 j <= 9
输出 i, j 的乘积
更新 j=j+1
更新 i=i+1
结束

4. 使用continuebreak

在循环中,我们可以使用continuebreak语句来控制循环的执行。

4.1 break 语句

break语句用于立即退出当前循环。

package mainimport "fmt"func main() {for i := 1; i <= 10; i++ {if i == 5 {break // 当 i 等于 5 时退出循环}fmt.Println(i)}
}

4.2 continue 语句

continue语句用于跳过当前迭代中的剩余代码,并开始下一次循环。

package mainimport "fmt"func main() {for i := 1; i <= 10; i++ {if i%2 == 0 {continue // 跳过偶数}fmt.Println(i) // 仅打印奇数}
}

4.3 代码执行流程图(break

Yes
Yes
No
No
开始
初始化 i=1
判断 i <= 10
判断 i == 5
退出循环
输出 i
更新 i=i+1
结束

4.4 代码执行流程图(continue

Yes
Yes
No
No
开始
初始化 i=1
判断 i <= 10
判断 i%2 == 0
跳过当前循环
更新 i=i+1
输出 i
更新 i=i+1
结束

5. 实践案例

5.1 计算阶乘

通过for循环计算一个给定数字的阶乘。

package mainimport "fmt"func main() {var n intfmt.Print("请输入一个非负整数: ")fmt.Scan(&n)factorial := 1for i := 1; i <= n; i++ {factorial *= i}fmt.Printf("%d 的阶乘是: %d\n", n, factorial)
}

5.2 斐波那契数列

使用循环生成斐波那契数列的前N项。

package mainimport "fmt"func main() {var n intfmt.Print("请输入斐波那契数列的项数: ")fmt.Scan(&n)a, b := 0, 1fmt.Print("斐波那契数列: ")for i := 0; i < n; i++ {fmt.Print(a, " ")a, b = b, a+b // 计算下一个数}fmt.Println()
}

5.3 代码执行流程图(阶乘)

Yes
No
开始
用户输入 n
初始化 factorial=1
初始化 i=1
判断 i <= n
计算 factorial *= i
更新 i=i+1
输出 factorial
结束

5.4 代码执行流程图(斐波那契数列)

Yes
No
开始
用户输入 n
初始化 a=0, b=1
初始化 i=0
判断 i < n
输出 a
a, b = b, a+b
更新 i=i+1
结束

6. 注意事项

  • 使用for循环时要注意设置合适的循环条件,避免出现无限循环。
  • 在嵌套循环中,确保内层循环的条件独立管理,以免影响外层循环的结果。
  • breakcontinue在使用时要合理规划,以免影响程序的流畅性。

7. 练习题

  1. 编写一个程序,计算1到N的平方和。
  2. 使用循环找出100以内的所有素数。
  3. 编写程序打印一个矩形的星号图案,行和列的数量由用户输入。
  4. 求斐波那契数列的和,直到某个数达到N。

8. 总结

在本章中,我们详细探讨了Go语言中的for循环,展示了其基本用法、常见变种以及如何灵活使用continuebreak控制循环的执行。通过代码示例和流程图,帮助大家更好地理解循环的工作原理。掌握这些内容后,你将能够熟练地在Go程序中应用循环结构,为后续的学习奠定良好的基础。

附加资源

  • Go语言官方文档 - 控制结构
  • Go语言学习资源与书籍

怎么样今天的内容还满意吗?再次感谢观众老爷的观看,关注下方GZH,回复666,送您价值199的AI大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!
在这里插入图片描述

相关文章:

15分钟学Go 第8天:控制结构 - 循环

第8天&#xff1a;控制结构 - 循环 在Go语言中&#xff0c;循环是一种基本的控制结构&#xff0c;用于重复执行一段代码。今天我们将深入了解Go语言中的for循环&#xff0c;包括它的各种用法、语法结构、以及如何在实践中有效地应用循环。 1. for 循环的基本概念 for循环是G…...

后端接收参数的几种常用注解

目录 一、RequestParam 二、RequestBody 三、PathVariable 四、RequestHeader 五、RequestAttribute 六、RequestPart 七、Valid 一、RequestParam 1.作用 用于将请求中的 查询参数 或 表单参数 绑定到方法的参数上。支持 GET 和 POST 请求。 2.使用方法 GetMappin…...

如何使用docker在linux中配置C++环境

目录 1. 安装docker 2. 配置C环境 1&#xff09;启动ubuntu:22.04容器 2&#xff09;配置编译环境G 3&#xff09;安装软件 4&#xff09;测试 1. 如何打包容器生成tar&#xff1f; a. 生成容器镜像 b. 将镜像压缩成tar 2. 如何将容器内部的端口映射至宿主机&#xf…...

darknet_ros 使用教程

首先是git clone可能会因为到没有权限的问题&#xff08;SSH&#xff09;&#xff0c;此时输入 git clone --recursive https://github.com/leggedrobotics/darknet_ros.git 下载成功之后 catkin_make -DCMAKE_BUILD_TYPERelease catkin失败原因&#xff08;在CMakefile中&…...

第九课 Vue中的v-bind指令拓展

Vue中的v-bind指令 示例拓展 1&#xff09;切换样式 <style>.test{width: 100px;height: 100px;border: 3px solid #000;}.bg{background: red;}</style><div id"app"><input type"button" value"点击切换样式" click&qu…...

DOIP协议介绍2-Diagnostic power mode information request (0x4003)消息

DOIP&#xff08;Diagnostic communication over Internet Protocol&#xff09;是基于以太网的通讯协议&#xff0c;用于对UDS协议的数据进行传输&#xff0c;规范于ISO13400标准。DOIP的Type&#xff1a;Diagnostic power mode information request&#xff08;0x4003&#x…...

Eclipse 软件:配置 JDBC、连接 MySQL 数据库、导入 jar 包

目录 一、配置 JDBC &#xff08;一&#xff09;作用 &#xff08;二&#xff09;官网下载 1. 下载链接 2. 下载 3. 补充&#xff1a;压缩包分类与用途 &#xff08;三&#xff09;eclipse 导入 JDBC 的 jar 包 &#xff08;四&#xff09;加载数据库驱动 &#xff08;五…...

二叉树中的最长交错路径

题目链接 二叉树中的最长交错路径 题目描述 注意点 每棵树最多有 50000 个节点每个节点的值在 [1, 100] 之间起点无需是根节点 解答思路 要找到最长交错路径&#xff0c;首先想到的是深度优先遍历因为起点无需是根节点&#xff0c;所以对于任意一个节点&#xff0c;其可以…...

高校企业数据可视化平台功能介绍/特色功能

数据可视化平台是一款适用于高校教学和各领域企业的零门槛可视化工具&#xff0c;能够解决高校数据分析与可视化类课程教学、实训问题。平台采用B/S结构&#xff0c;用户不需要下载客户端&#xff0c;可通过浏览器进行访问。 数据可视化平台提供多种指标设计&#xff0c;学…...

RHCE第三次笔记SSH

第三章 远程连接服务器 1、远程连接服务器简介 &#xff08;1&#xff09;什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前登录 linux 主机以取得可操作主机接口&#xff08;shell &#xff09;&#xff0c;而登录后…...

JAVA基础-包装类

文章目录 包装类1 概述2 Integer类2.1 Integer类构造方法2.2 Integer类成员方法 3 基本类型与字符串之间的转换3.1 基本类型转换为String3.2 String转换成基本类型 4 底层原理 第六章&#xff1a;算法小题练习一&#xff1a;练习二&#xff1a;练习三&#xff1a;练习四&#x…...

复合逻辑运算与复合逻辑门

或非门&#xff08;NOR gate&#xff09; 是一种基本的逻辑门&#xff0c;它结合了“或”&#xff08;OR&#xff09;和“非”&#xff08;NOT&#xff09;操作。或非门的输出是输入信号的否定&#xff0c;只有在所有输入都为零时&#xff0c;输出才为一。 与非运算&#xff0…...

工厂模式~

现实世界中的例子 考虑一个招聘经理的情况。一个人不可能为每一个职位都进行面试。根据职位空缺&#xff0c;她必须决定并将面试步骤委托给不同的人。 用简单的话来说 它提供了一种将实例化逻辑委托给子类的方法。 维基百科的解释 在基于类的编程中&#xff0c;工厂方法模式是…...

Elasticsearch基本使用及介绍

Elasticsearch 1. 关于各种数据库的使用 关于MySQL&#xff1a;是关系型数据库&#xff0c;能清楚的表示数据之间的关系&#xff0c;并且&#xff0c;是基于磁盘存储的&#xff0c;可以使用相对较低的成本存储大量的数据 关于Redis&#xff1a;是基于K-V结构的在内存中读写数…...

10. PH47代码框架文件组织

通过之前章节对PH47体系的介绍&#xff0c;读者对PH47能建立起了初步的概念及掌握各主要构成部分的使用开发方法。从本章节开始&#xff0c;就将对PH47代码的二次开发内容进行具体讲述。 本部分就将对PH47框架当中代码文件的组织方式及功能作用进行介绍&#xff0c;对于将来熟…...

LabVIEW提高开发效率技巧----VI继承与重载

在LabVIEW开发中&#xff0c;继承和重载是面向对象编程&#xff08;OOP&#xff09;中的重要概念。通过合理运用继承与重载&#xff0c;不仅能提高代码的复用性和灵活性&#xff0c;还能减少开发时间和维护成本。下面从多个角度介绍如何在LabVIEW中使用继承和重载&#xff0c;并…...

4.8 大数据发展趋势

文章目录 今天&#xff0c;我想与大家探讨一个充满潜力和变革的主题——大数据的发展趋势。大数据不仅正在改变我们的工作和生活方式&#xff0c;更是推动社会进步和经济发展的关键因素。 首先&#xff0c;让我们看看国内的大数据发展趋势。中国政府高度重视大数据产业&#x…...

【无标题】react组件封装

子组件制作 import { useState,useRef, useEffect} from "react"const Table (data)> {const {value ,option} dataconsole.log(value)const [stata,setValue] useState()const useRefs useRef(value)useEffect(()> {useRefs.current.value value })c…...

git+cmake将Open3D配置到visual studio

这里假设你已经安装好了上述内容&#xff0c;我们直接开始安装&#xff1a; 第一步&#xff1a;以管理员身份打开powershell&#xff0c;执行 git clone https://github.com/isl-org/Open3D.git然后依次执行 cd Open3D mkdir build cd build开启你的梯子&#xff0c;并设置你…...

ArcGIS-CityEngine 2024-新手小白也能试用+入门可视化vga编程--第一篇

目录 下载CityEngine并创建空项目 场景双击 _Tour &#xff08;Navigator面板)的就行了&#xff0c;&#xff08;不用额外下载&#xff09; 生成街道 基本操作 多个图层Group 区分 Editor 多个区域&#xff08;插件模式&#xff0c;浮空窗口&#xff0c; 官方的例子&…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...