for 循环语法和执行流程 | 学习笔记

简介: 快速学习 for 循环语法和执行流程

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map: ffor 循环语法和执行流程】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9574


for 循环语法和执行流程

目录:

一、基本语法

二、For 循环执行流程分析

 

一、基本语法

1、语法格式

for 循环变量初始化;循环条件;循环变量迭代{

循环操作(语句)

}

2、说明 for 循环四要素:

对 for 循环来说,有四个要素

要素1:循环变量初始化,也就是说需要有循环变量然后进行初始化。

要素2:循环条件,循环条件会判断循环是否继续执行。

要素3:循环操作(语句),也叫循环体,循环体就是要具体做的事情,完成的功能是什么。就像上个案例讲的 fmt.Println(“你好,尚硅谷”,i) 就是循环操作。

要素5:循环变量迭代

3、for 循环执行的顺序说明

(1)第一步首先执行循环变量的初始化,比如初始化 i:=1

(2)第二步执行循环条件的判断,比如判断 i<= 10

(3)如果循环条件为真,就执行循环体的循环操作:比如 fmt.Println(“...”)

(4)继续再执行循环变量迭代,比如 i++

(5)执行完后又反复执行 2,3,4 步骤,直到循环条件为假 False ,就退出 for 循环

可能这样讲解后还是不清晰,所以下面再次进行流程图的分析。

 

二、For 循环执行流程分析

1、For 循环的流程图

image.png

说明:

首先代码从最上面开始执行,进行变量初始化,放到之前的分析的话就是 i=1,执行完后进行条件的判断,如果为真就执行循环操作,只要循环条件不为假,就会一直循环下去,直到循环条件为假,就为 Flase 才会跳出循环,for 循环结束后如果下面还有代码就继续执行,没有代码就结束程序。

2、对照代码分析 for 循环的执行过程

下面将根据如图的代码进行讲解代码的执行和内存的变化。在图中假设一个内存区,一个终端区,终端就是控制台。

image.png

如果代码从 for 开始启动,首先把代码要素提取出来,分别是 i:=1 变量的初始化,i<=10 是循环条件,fmt.Println 是循环执行语句,i++ 是循环变量的迭代。然后执行语句 i:=1,则会有一个变量i在内存中赋值为 1,第一句话就执行完了。然后执行判断 i<=10,如果 i<=10 为真就执行下面的语句 Println,这时 i=1,则会在终端输出“你好,尚硅谷 1”,第二步执行完后执行 i++,而内存中 i 的赋值则为 i[2],紧接着再进行判断,这时判断i仍然小于等于 10,然后再执行 Println 语句,这时再控制台会输出第二句“你好,尚硅谷 2”,执行完后又执行 i++,于是 i=3,以此类推不停的走,直到输出“你好,尚硅谷 9”,输出后紧接着就会进行 i++,进行判断i仍然小于等于 10,则再进行输出“你好,尚硅谷 10”,输出后再进行 i++,然后内存中 i=11,再继续进行判断时,i=11 大于 10,于是进行退出,所以此时就跳出了 for 循环,这里要注意结束 for 循环后 i 是等于 11 的,所以得出结论:当 for 循环结束后i的值是一定是大于 10 的,不大于 10 的话会一直循环。这一点非常重要,要理解,下面输出 i 的值进行验证:

如果代码如下:

for i:= 1; i < = 10; i++{

fmt.Println(“你好,尚硅谷”,i)

}

fmt.Println(“i=”,i)

}

则会出现报错,因为变量 i 是在 for 循环进行定义的,因此 i 的作用域只能在 for 循环中有效,出了这个 for 循环i就是无效的,所以此时会报错 undefined:i,因此如果要进行测试输出的话,就要把 i 定义到 for 循环外,此时再进行输出,运行程序。

代码为:

i:= 1

for; i < = 10; i++{

fmt.Println(“你好,尚硅谷”,i)

}

fmt.Println(“i=”,i)

}

运行结果:
D:\goproject\src\go_code\chapter05\fordemo>go run main .go

image.png

相关文章
|
小程序 开发工具 开发者
小程序vant-weapp-商品卡片列表
小程序vant-weapp-商品卡片列表
542 0
|
算法 Python
Python算法——广度优先搜索
Python算法——广度优先搜索
641 0
|
7月前
|
机器学习/深度学习 文字识别 安全
微信加人频繁怎么快速解除?
微信加人频繁限制的技术分析与解决方案 1. 微信加人限制机制解析
|
11月前
|
IDE 程序员 开发工具
只用正版!教你5个方法,白嫖JetBrains家族的所有产品,包含:IntelliJ IDEA、PyCharm、WebStorm、CLion、Rider
程序员晚枫分享了5种官方认证的免费使用JetBrains家族产品的方法,包括内容创作者计划、开源项目支持、教育许可证、用户组支持和开发者认可计划。这些方法帮助个人开发者与小型团队合法获取强大开发工具,如IntelliJ IDEA、PyCharm等,降低开发成本,提升效率。同时提醒大家遵守使用规范,尊重知识产权。
2086 13
|
Linux
Could not fetch/save url http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoError 403
Could not fetch/save url http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoError 403
2560 1
|
JavaScript 前端开发 UED
什么是 Vapor 模式?为什么说它会成为 Vue 的未来...
什么是 Vapor 模式?为什么说它会成为 Vue 的未来...
|
C语言
C语言取整方法详解
C语言取整方法详解
3416 0
|
SQL 消息中间件 存储
湖仓一体电商项目背景与架构介绍及基础环境准备
湖仓一体实时电商项目是基于某宝商城电商项目的电商数据分析平台,本项目在技术方面涉及大数据技术组件搭建,湖仓一体分层数仓设计、实时到离线数据指标分析及数据大屏可视化,项目所用到的技术组件都从基础搭建开始,目的在于湖仓一体架构中数据仓库与数据湖融合打通,实现企业级项目离线与实时数据指标分析。在业务方面目前暂时涉及到会员主题与商品主题,分析指标有用户实时登录信息分析、实时浏览 pv/uv 分析、实时商品浏览信息分析、用户积分指标分析,后续还会继续增加业务指标和完善架构设计。
821 2
|
Java 关系型数据库 MySQL
Springboot+vue实现前后端分离智能化考试系统
Springboot+vue实现前后端分离智能化考试系统
212 0