从零学习 Go 语言(10):流程控制之for 循环

hello_wbm · · 793 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 **系列导读** [从零学习 Go 语言(01):一文搞定开发环境的搭建](https://studygolang.com/articles/27365) [从零学习 Go 语言(02):学习五种变量创建的方法](https://studygolang.com/articles/27432) [从零学习 Go 语言(03):数据类型之整型与浮点型](https://studygolang.com/articles/27440) [从零学习 Go 语言(04):byte、rune与字符串](https://studygolang.com/articles/27463) [从零学习 Go 语言(05):数据类型之数组与切片](https://studygolang.com/articles/27508) [从零学习 Go 语言(06):数据类型之字典与布尔类型](https://studygolang.com/articles/27563) [从零学习 Go 语言(07):数据类型之指针](https://studygolang.com/articles/27585) [从零学习 Go 语言(08):流程控制之if-else](https://studygolang.com/articles/27613) [从零学习 Go 语言(09):流程控制之switch-case](https://studygolang.com/articles/27660) --- Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: - if - else 条件语句 - switch - case 选择语句 - for - range 循环语句 - goto 无条件跳转语句 - defer 延迟执行 上一篇讲了switch - case 选择语句,今天先来讲讲 for 循环语句。 ## 0. 语句模型 这是 for 循环的基本模型。 ``` for [condition | ( init; condition; increment ) | Range] { statement(s); } ``` 可以看到 for 后面,可以接三种类型的表达式。 1. 接一个条件表达式 2. 接三个表达式 3. 接一个 range 表达式 但其实还有第四种 4. 不接表达式 ## 1. 接一个条件表达式 这个例子会打印 1 到 5 的数值。 ```go a := 1 for a <= 5 { fmt.Println(a) a ++ } ``` 输出如下 ``` 1 2 3 4 5 ``` ## 2. 接三个表达式 for 后面,紧接着三个表达式,使用 `;` 分隔。 这三个表达式,各有各的用途 - 第一个表达式:初始化控制变量,在整个循环生命周期内,只运行一次; - 第二个表达式:设置循环控制条件,当返回true,继续循环,返回false,结束循环; - 第三个表达式:每次循完开始(除第一次)时,给控制变量增量或减量。 这边的例子和上面的例子,是等价的。 ```go import "fmt" func main() { for i := 1; i <= 5; i++ { fmt.Println(i) } } ``` 输出如下 ``` 1 2 3 4 5 ``` ## 2. 不接表达式:无限循环 在 Go 语言中,没有 while 循环,如果要实现无限循环,也完全可以 for 来实现。 当你不加任何的判断条件时, 就相当于你每次的判断都为 true,程序就会一直处于运行状态,但是一般我们并不会让程序处于死循环,在满足一定的条件下,可以使用关键字 `break` 退出循环体,也可以使用 `continue` 直接跳到下一循环。 下面两种写法都是无限循环的写法。 ```go for { 代码块 } // 等价于 for ;; { 代码块 } ``` 举个例子 ```go 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 会返回两个值:索引和数据,若你后面的代码用不到索引,需要使用 `_` 表示 。 ```go 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 ``` --- ![](http://image.python-online.cn/20200321153457.png)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

793 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传