1.for循环概念

程序的流程控制结构一共有三种: 顺序结构,选择结构,循环结构。

  • 顺序结构:代码从上向下逐行的执行
  • 选择结构:条件满足,某些代码才会被执行。0-1次

    if语句,switch语句
  • 循环结构:条件满足,某些代码会被反复的多次执行。0-n次

    for语句

值得注意的是GO语言不像Java等其他语言,还有什么while、dowhile;简单一句话:一个For打天下

2.for的基本用法

/**
语法结构
for init;condition;post{ } init:初始化语句
condition:条件判断语句
post:步进表达式 初始化语句只执行一次。在初始化循环之后,将检查该条件。
如果条件计算为true,那么仆中的循环体将被执行,然后是post语句。
post语句将在循环的每次成功迭代之后执行。在执行post语句之后,该条件将被重新检查。
如果它是正确的,循环将继续执行,否则循环终止。
*/ for i := 1; i <= 5; i++ {
fmt.Println("hello Go")
}
// fmt.Println(i)

3.for的其他写法

// 其他写法一:省略初始化语句和步进表达式
/**
for 条件语句 { }
等同于Java中的while(条件){}语句
*/
// for j := 1; j <= 5; j++ {
// fmt.Println(j)
// } // 变形,相当于提升了作用域
j := 1
for j <= 10 {
fmt.Println(j)
j++
}
fmt.Println(j) // 其他写法二:省略三个表达式
/**
for{}
和Java中的写法一样,死循环
*/
for {
fmt.Println(j)
} // 其他写法... 省略三个表达式其中的任意组合

4.for的小案例

// for循环小案例
// 1.打印100-1
for x := 100; x > 0; x-- {
fmt.Println("x:", x)
} // 2.求1-100的和
sum := 0
for y := 1; y <= 100; y++ {
sum += y
}
fmt.Println("1-100的和为sum:", sum) // 3.打印1-100内,能够被3整除,但是不能被5整除的数字,
// 统计被打印的数字的个数,每行打印5个
count := 0
for m := 1; m <= 100; m++ {
if m%3 == 0 && m%5 != 0 {
count++
fmt.Print("m:", m)
fmt.Print("\t")
if count%5 == 0 {
fmt.Println()
}
}
}
fmt.Println()
fmt.Println("count:", count)

5.for嵌套

// for循环嵌套
/**
案例1:
打印
*****
*****
*****
*****
*****
案例二:
九九乘法表
*/ // 案例1:
for i := 0; i < 5; i++ {
for j := 0; j < 5; j++ {
fmt.Print("*")
}
println()
} // 案例二:
for i := 1; i <= 9; i++ {
for j := 1; j <= i; j++ {
fmt.Print(j, "*", i, "=", i*j, "\t")
}
println()
}

6.break和continue

循环控制语句,这一块和Java中一样的

  • break:彻底的结束循环。。终止
  • continue: 结束了某一次循环,下次继续。。中止

// break
for i := 1; i < 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
} // continue
for i := 0; i < 10; i++ {
if i == 5 {
continue
}
fmt.Println(i)
}

7.循环标签名

// 针对循环嵌套处理,取别名实现内外循环控制
out:
for i := 0; i < 10; i++ {
for j := 0; j < 5; j++ {
println(j)
if j == 2 {
// break out
continue out
}
}
}

8、打印水仙花

num := 299
geWei := num % 10
fmt.Println(geWei) shiWei := num / 10 % 10
fmt.Println(shiWei) baiWei := num / 100
fmt.Println(baiWei) // 打印100-999的水仙花数
for i := 100; i <= 999; i++ {
// 拿到一个数的个位
ge := i % 10
shi := i / 10 % 10
bai := i / 100 % 10 // 复杂写法
// if i == ge*ge*ge+shi*shi*shi+bai*bai*bai {
// fmt.Print("水仙花数:", i)
// } // math.Pow(float64(ge), 3) : 求一个数的多少次幂
if float64(i) == math.Pow(float64(ge), 3)+math.Pow(float64(shi), 3)+math.Pow(float64(bai), 3) {
fmt.Println(i)
}
} // 打印2-1000内的素数(素数:只能被1和本身整除的数)
for i := 2; i <= 1000; i++ {
flag := true
for j := 2; j < i; j++ {
if i%j == 0 {
flag = false // 不是素数
break
}
}
if flag {
fmt.Println("是素数", i)
}
} // 优化写法,
for i := 2; i <= 100; i++ {
flag := true
for j := 2; j < int(math.Sqrt(float64(i))); j++ {
if i%j == 0 {
flag = false // 不是素数
break
}
}
if flag {
fmt.Println("是素数", i)
}
}

9、For语句的更多相关文章

  1. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  2. whdxlib

    1 数据库系统实现 实 验 指 导 书 齐心 彭彬 计算机工程与软件实验中心 2016 年 3 月2目 录实验一.JDBC 应用程序设计(2 学时) ......................... ...

  3. 【.net 深呼吸】细说CodeDom(2):表达式、语句

    在上一篇文章中,老周厚着脸皮给大伙介绍了代码文档的基本结构,以及一些代码对象与CodeDom类型的对应关系. 在评论中老周看到有朋友提到了 Emit,那老周就顺便提一下.严格上说,Emit并不是针对代 ...

  4. 将表里的数据批量生成INSERT语句的存储过程 增强版

    将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...

  5. mysql学习之 sql语句的技巧及优化

    一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...

  6. SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

    Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...

  7. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  8. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  9. MyBatis源码分析(二)语句处理器

    StatementHandler 语句处理器,主要负责语句的创建.参数的设置.语句的执行.不负责结果集的处理. Statement prepare(Connection connection, Int ...

  10. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

随机推荐

  1. 循环神经网络RNN完全解析:从基础理论到PyTorch实战

    在本文中,我们深入探讨了循环神经网络(RNN)及其高级变体,包括长短时记忆网络(LSTM).门控循环单元(GRU)和双向循环神经网络(Bi-RNN).文章详细介绍了RNN的基本概念.工作原理和应用场景 ...

  2. 《SQL与数据库基础》23. 读写分离

    目录 读写分离 一主一从 准备 配置 双主双从 准备 配置 主库配置 从库配置 从库关联主库 主库相互复制 双主双从读写分离 本文以 MySQL 为例.以 MyCat 数据库中间件为例,通过 MyCa ...

  3. 了解 HarmonyOS

    引言 在开始 HarmonyOS 开发之前,了解其背景.特点和架构是非常重要的.本章将为你提供一个全面的 HarmonyOS 概览. 目录 什么是 HarmonyOS HarmonyOS 的发展历程 ...

  4. 在编写API接口的技术文章时应注意的内容

    编写API接口的技术文章时,建议包含以下内容: 1. 简介:介绍API接口的目的和作用,以及所属的项目或服务. 2. 接口描述:详细描述API接口的功能和使用方法,包括输入参数.输出结果和可能的错误码 ...

  5. 实用工具、01 效率篇 | 几个操作快速提升 Typora 使用体验

    本篇文章旨在提高大家记笔记的效率,分享的工具请按个人需求安装 Typora-plugins 为 Typora 添加更多新功能,我最喜欢的是多标签页管理 obgnail/typora_plugin: T ...

  6. web组态可视化编辑器

    随着工业智能制造的发展,工业企业对设备可视化.远程运维的需求日趋强烈,传统的单机版组态软件已经不能满足越来越复杂的控制需求,那么实现web组态可视化界面成为了主要的技术路径. 行业痛点 对于软件服务商 ...

  7. MySQL 日志管理、备份与恢复

    MySQL 日志管理.备份与恢复 ---MySQL 日志管理--- MySQL 的日志默认保存位置为 /usr/local/mysql/data vim /etc/my.cnf [mysqld] ## ...

  8. Java 21的StringBuilder和StringBuffer新增了一个repeat方法

    发现Java 21的StringBuilder和StringBuffer中多了repeat方法: /** * @throws IllegalArgumentException {@inheritDoc ...

  9. PostgreSQL学习笔记-4.基础知识:空值NULL、别名AS

    NULL 值代表遗漏的未知数据. 默认地,表的列可以存放 NULL 值. 本章讲解 IS NULL 和 IS NOT NULL 操作符. 语法 当创建表时,NULL 的基本语法如下: CREATE T ...

  10. FFmpeg: How To Convert MP4 Video To MP3 Audio?

       FFmpeg: How To Convert MP4 Video To MP3 Audio? Learn how to Convert an MP4 Video to MP3 Audio wit ...