本文原文:http://golang.iswbm.com

Github:http://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 后面,可以接三种类型的表达式。

  1. 接一个条件表达式
  1. 接三个表达式
  1. 接一个 range 表达式

但其实还有第四种

  1. 不接表达式

1. 接一个条件表达式

这个例子会打印 1 到 5 的数值。

a := 1
for a <= 5 {fmt.Println(a)a ++
}

输出如下

1
2
3
4
5

2. 接三个表达式

for 后面,紧接着三个表达式,使用 ; 分隔。

这三个表达式,各有各的用途

  • 第一个表达式:初始化控制变量,在整个循环生命周期内,只运行一次;
  • 第二个表达式:设置循环控制条件,当返回true,继续循环,返回false,结束循环;
  • 第三个表达式:每次循完开始(除第一次)时,给控制变量增量或减量。

这边的例子和上面的例子,是等价的。

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 直接跳到下一循环。

下面两种写法都是无限循环的写法。

for {代码块
}// 等价于
for ;; {代码块
}

举个例子

import "fmt"func main() {var i int = 1for {if i > 5 {break}fmt.Printf("hello, %dn", 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, %sn", item)}
}

输出如下

hello, world
hello, python
hello, go

如果你用一个变量来接收的话,接收到的是索引

import "fmt"func main() {myarr := [...]string{"world", "python", "go"}for i := range myarr {fmt.Printf("hello, %vn", i)}
}

输出如下

hello, 0
hello, 1
hello, 2


好了,今天的文章就到这里了。

若今天的分享对你有帮助,不如点个赞,支持一下?

go for 循环遍历数组并排序_10. Go语言流程控制:for 循环相关推荐

  1. go for 循环遍历数组并排序_Go语言基础教程:for循环语句

    一.程序的流程结构 程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构. 顺序结构:代码从上向下逐行的执行 选择结构:条件满足,某些代码才会被执行.0-1次 if语句,switch语句 循环结 ...

  2. golang for循环_10. Go语言流程控制:for 循环

    本文原文:http://golang.iswbm.com Github:http://github.com/iswbm/GolangCodingTime Go里的流程控制方法还是挺丰富,整理了下有如下 ...

  3. 【Linux】Shell脚本中如何使用“循环”遍历“数组”中的元素(包括MySQL的常用指令介绍)

    一.背景 实习过程中,今天mentor突然让我拉取一下远端园区数据库中的部分信息,因为包含很多不同园区的数据信息,而且要以园区为单位生成文件来对数据进行存放,因此自然是需要使用shell脚本来自动生成 ...

  4. js for循环 遍历数组 遍历对象属性

    1.js for循环 遍历对象属性 var person = {fname:"John",lname:"Doe",age:25}; for (x in pers ...

  5. SCSS 使用@each 方法循环遍历数组颜色并赋值

    SCSS 使用@each 方法循环遍历数组颜色并赋值 $liColor: #f288ab, #fb622f, #90e38a, #f3d177, #86c9fd, #86e3fd, #c693fd, ...

  6. 使用while循环语句与自增运算符循环遍历数组 (Java经典编程案例)

    大多情况下,遍历数组都是使用for循环语句实现.其实使用while循环语句与自增运算符循环 也能遍历数组,代码如下: /*** 使用while循环语句与自增运算符循环遍历数组*/ public cla ...

  7. Vue前端js循环遍历数组八种方法总结最新

    前五种常用,第三种个人觉得常用最多,自己复制代码打印试试 var arr = [1, 2, 3, 4, 5, 6];// 第一种 for循环遍历var newArr = [];for(var i = ...

  8. 使用for循环遍历数组

    package day08;public class ArrayForDemo02 {public static void main(String[] args) {//数组定义 0 1 2 3 4 ...

  9. for循环遍历数组并获取到数据值进行判断

    /*vm.listData为数组*/ var obj = vm.listData;//for循环遍历数组 获取数组中的 手机号 并判断手机号的 长度 是否为规定的 长度for (var i = 0; ...

最新文章

  1. Cookie的简单实用
  2. 国赛无望,兄弟尽力了
  3. 查看Linux 下某个程序的内存情况
  4. json报文转化为xml报文_JSON与XML互相转化(Jackson)
  5. 把第三方jar包放入本地仓库
  6. 整数判重、大整数Hash
  7. 毫米波雷达数据处理_基于毫米波雷达的桥梁静挠度采集系统
  8. [转]Angular2 Material2 封装组件 —— confirmDialog确定框
  9. Java跟踪对象,使用OpenCV实时隔离和跟踪多个对象?
  10. jQuery方式追加div覆盖
  11. 虚拟机连不上网 Xshell连不上虚拟机
  12. ASP.NET MVC- UrlHelper的用法
  13. 非常好用的jdk帮助文档jdk1.8中文谷歌翻译
  14. win10怎么进入修复计算机,Win10怎么进入安全模式以及Win10:使用Windows恢复环境轻松修复...
  15. 一建工程经济的关键数据推导及关键记忆点
  16. Accessorize to a Crime: Real and Stealthy Attacks on State-of-the-Art Face Recognition
  17. 稚晖君_瀚文机械键盘
  18. b、B、KB、MB、GB 的关系?
  19. JAVA 消息队列的使用场景
  20. 云服务器(CentOS 7)上面部署Node.js环境

热门文章

  1. 使用MvcContrib的FormHelper
  2. 数据结构四——散列表(上)
  3. HDU - 4586 数学期望
  4. md5与des算法有何不同_到底AI芯片和传统芯片有何区别?
  5. 提高电脑反应速度_设计师笔记本电脑推荐——视觉系ThinkBook 15p创造本
  6. Python中曲率与弯曲的转换_1000R曲率更具沉浸感!三星T55曲面显示器评测
  7. zabbix mysql设置中文乱码_解决zabbix监控因php问题导致图形界面中文乱码方法
  8. lombok的使用三部曲及使用中遇到的问题(持续更新)
  9. js层级选择框样式_【JavaWeb】85:jQuery的各种选择器
  10. 接待员如何向客人upsell_客房留言卡也能收获好评,看看高情商酒店如何做的?...