

10. Go 语言流程控制:for 循环
source link: https://studygolang.com/articles/28377
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Hi,大家好,我是明哥。
在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。
我的在线博客: http://golang.iswbm.com
我的 Github:github.com/iswbm/GolangCodingTime
Go里的流程控制方法还是挺丰富,整理了下有如下这么多种:
- if - else 条件语句
- switch - case 选择语句
- for - range 循环语句
- goto 无条件跳转语句
- defer 延迟执行
上一篇讲了switch - case 选择语句,今天先来讲讲 for 循环语句。
0. 语句模型
这是 for 循环的基本模型。
for [condition | ( init; condition; increment ) | Range] { statement(s); }
可以看到 for 后面,可以接三种类型的表达式。
- 接一个条件表达式
- 接三个表达式
- 接一个 range 表达式
但其实还有第四种
- 不接表达式
1. 接一个条件表达式
这个例子会打印 1 到 5 的数值。
a := 1 for a <= 5 { fmt.Println(a) a ++ }
输出如下
2. 接三个表达式
for 后面,紧接着三个表达式,使用 ;
分隔。
这三个表达式,各有各的用途
- 第一个表达式:初始化控制变量,在整个循环生命周期内,只运行一次;
- 第二个表达式:设置循环控制条件,当返回true,继续循环,返回false,结束循环;
- 第三个表达式:每次循完开始(除第一次)时,给控制变量增量或减量。
这边的例子和上面的例子,是等价的。
import "fmt" func main() { for i := 1; i <= 5; i++ { fmt.Println(i) } }
输出如下
2. 不接表达式:无限循环
在 Go 语言中,没有 while 循环,如果要实现无限循环,也完全可以 for 来实现。
当你不加任何的判断条件时, 就相当于你每次的判断都为 true,程序就会一直处于运行状态,但是一般我们并不会让程序处于死循环,在满足一定的条件下,可以使用关键字 break
退出循环体,也可以使用 continue
直接跳到下一循环。
下面两种写法都是无限循环的写法。
for { 代码块 } // 等价于 for ;; { 代码块 }
举个例子
import "fmt" func main() { var i int = 1 for { if i > 5 { break } fmt.Printf("hello, %d\n", i) i++ } }
输出如下
hello, 1 hello, 2 hello, 3 hello, 4 hello, 5
3. 接 for-range 语句
遍历一个可迭代对象,是一个很常用的操作。在 Go 可以使用 for-range 的方式来实现。
range 后可接数组、切片,字符串等
由于 range 会返回两个值:索引和数据,若你后面的代码用不到索引,需要使用 _
表示 。
import "fmt" func main() { myarr := [...]string{"world", "python", "go"} for _, item := range myarr { fmt.Printf("hello, %s\n", item) } }
输出如下
hello, world hello, python hello, go
系列导读
24. 超详细解读 Go Modules 前世今生及入门使用
欢迎关注我们的微信公众号,每天学习Go知识

Recommend
-
64
【cmake系列使用教程】 cmake使用教程(一)-起步 cmake使用教程(二)-添加库 cmake使用教程(三)-安装、测试、系统自检 cmake使用教程(四)-文件生成器 cmake使用教程(五)-cpack生成安装包 cmake使用教程(六)-蛋疼的
-
76
1.1for循环的格式及基本使用1.1.1for循环语句格式:for(初始化语句;判断条件语句;控制条件语句){循环体语句;//让循环体代码执行多次;}1.1.2执行流程A:执行初始化语句B:执行判断条件语句,看其结果是true还是false如果是false,循环结束。如果是true,继续执行。C:...
-
30
控制跳转语句break1.1.1Break的使用场景和作用break的使用场景:在选择结构switch语句中在循环语句中离开使用场景的存在是没有意义的break的作用:跳出单层循环1.1.2代码案例十八packagecom.itheima_07;/**break:中断的意思*使用场景:*A:switch语句中*B:循环中*注...
-
25
go流程控制 字符串详解 字符串原理 字符串底层就是一个byte数组,所以可以和[]byte类型互相转换 字符串中的字符是不能修改的 字符串是有byte字节组成,所以字符串的长度是byte字...
-
38
Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,...
-
15
Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,...
-
27
Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,...
-
27
Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,...
-
8
HAProxy 研究笔记 -- 主循环处理流程 2015-07-29 16:05:00 http://blog.chinaunix.net/uid-10167808-id-3807412.html 本文简单...
-
5
TiDB Operator 源码阅读 (三) 编排组件控制循环TiDB Robot开源分布式数据库 TiDB
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK