for结构简介

Go语言只有for循环这一种循环结构,Go语言中的for循环语句的三个部分不需要用括号括起来,但循环体必须用 { } 括起来。基本的for循环包含三个由分号分开的组成部分:

  • 初始化语句:在第一次循环执行前被执行
  • 循环条件表达式:每轮迭代开始前被求值
  • 后置语句:每轮迭代后被执行

初始化语句一般是一个短变量声明,这里声明的变量仅在整个 for 循环语句可见。如果条件表达式的值变为 false,那么迭代将终止。

基于计数器的for循环

基于计数器的迭代,基本形式为:

for 初始化语句; 条件语句; 修饰语句 {
//循环语句
}

我们用for循环来计算100以内正整数的和。

package main
import "fmt"
func main(){
sum := 0
for i:=1;i<100;i++{
sum += i
}
fmt.Println(sum)
}

由花括号括起来的代码块会被重复执行已知次数,该次数是根据计数器(此例为 i)决定的。循环开始前,会执行且仅会执行一次初始化语句 i := 1;,这比在循环之前声明更为简短。紧接着的是条件语句 i < 100;,在每次循环开始前都会进行判断,一旦判断结果为 false,则退出循环体。最后一部分为修饰语句 i++,一般用于增加或减少计数器。

这三部分组成的循环的头部,它们之间使用分号 ; 相隔,但并不需要括号 () 将它们括起来。例如:

for (i = 0; i < 10; i++) { } //非法代码!

和if-else语句类似,for循环中左花括号{必须和 for 语句在同一行,计数器的生命周期在遇到右花括号} 时便终止

基于条件判断的for循环

for 循环的第二种形式是没有头部的条件判断(类似其它语言中的 while 循环),基本形式为:

for 条件语句 {}

也可以认为这是没有初始化语句和修饰语句的 for 结构,因此 ;;便是多余的了。我们来写一个基于条件判断的简单for循环,示例代码如下:

package main
import "fmt"
func main() {
var i int = 5
for i >= 0 {
i = i - 1
fmt.Printf("The variable i is now: %d\n", i)
}
}

for-range结构

提到for循环,我们必须再提一下range()这个内置函数,这是 Go 语言特有的一种的迭代结构,它一般用来遍历数组,slice和map等集合。我们用range来遍历一个数组,以下代码会打印出每个值的序号和对应的值。

package main

import(
"fmt"
) func main() {
arr := [...]int{6, 7, 8}
for i, v := range arr {
fmt.Println(i,v)
}
}

无限循环

Go 语言有以下几种无限循环:

i:=0; ; i++
for { }
for ;; { }
for true { }

这些无限循环都是 for 循环的条件语句被省略了。如果 for 循环的头部没有条件语句,那么就会认为条件永远为 true。因此如果不想造成死循环,循环体内必须有相关的条件判断以确保会在某个时刻退出循环。

GoLang学习控制语句之for的更多相关文章

  1. GoLang学习控制语句之字符串

    Go语言字符串是一种值类型,且值不可变,即创建某个文本后你无法再次修改这个文本的内容:更深入地讲,字符串是字节的定长数组.Go 代码使用 UTF-8 编码(且不能带 BOM),同时标识符支持 Unic ...

  2. GoLang学习控制语句之switch

    基本结构 相比较 C 和 Java 等其它语言而言,Go 语言中的 switch 结构使用上更加灵活.它接受任意形式的表达式,例如: switch var1 { case val1: ... case ...

  3. GoLang学习控制语句之if/else

    if语句 if 是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号括起来的代码块,否则就忽略该代码块继续执行后续的代码. if condition { // do ...

  4. golang学习之beego框架配合easyui实现增删改查及图片上传

    golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...

  5. Golang学习 - 学习资源列表

    Golang 学习资源: <Go 语言圣经(中文版)>  - 书籍 http://shinley.com/index.html <学习 Go 语言> - 书籍 http://w ...

  6. Golang学习:sublime text3配置golang环境

    最近导师让学习golang, 然后我就找了些有关golang的学习视频和网站. 昨天在电脑上下载了go tools, 之后在sublime上配置了golang的运行环境.By the way, 我的电 ...

  7. golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题

    golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题 下面这个程序运行的能num结果是什么? package main import ( "fmt" " ...

  8. golang学习笔记19 用Golang实现以太坊代币转账

    golang学习笔记19 用Golang实现以太坊代币转账 在以太坊区块链中,我们称代币为Token,是以太坊区块链中每个人都可以任意发行的数字资产.并且它必须是遵循erc20标准的,至于erc20标 ...

  9. golang学习笔记18 用go语言编写移动端sdk和app开发gomobile

    golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...

随机推荐

  1. 43.Charles抓包(iOS的http/https请求)

    Charles安装 HTTP抓包 HTTPS抓包     1. Charles安装 官网下载安装Charles: https://www.charlesproxy.com/download/ 2. H ...

  2. python对数据类型的相关操作

    一.int的相关操作 int只有一个相关操作,bit_length()   用于计算一个数字的二进制长度 二.bool的相关操作 1.把数字转换成bool,除了0,返回的都是True a = 10 p ...

  3. 10个相见恨晚的 Java 在线练手项目

    10个有意思的Java练手项目: 1.Java 开发简单的计算器 难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习 2.制作一个自己的 Java 编辑器 难度中等,适合 Ja ...

  4. 821. Shortest Distance to a Character

    class Solution { public: vector<int> shortestToChar(string S, char C) { int len=S.length(); ve ...

  5. 2019.02.09 bzoj4487: [Jsoi2015]染色问题(容斥原理)

    传送门 题意简述: 用ccc中颜色给一个n∗mn*mn∗m的方格染色,每个格子可涂可不涂,问最后每行每列都涂过色且ccc中颜色都出现过的方案数. 思路: 令fi,j,kf_{i,j,k}fi,j,k​ ...

  6. Educational Codeforces Round 60 D dp + 矩阵快速幂

    https://codeforces.com/contest/1117/problem/D 题意 有n个特殊宝石(n<=1e18),每个特殊宝石可以分解成m个普通宝石(m<=100),问组 ...

  7. iphone导入照片不显示,不同步怎么整

    可以借助itools或者爱思助手来处理 进入电脑软件后 找到文件管理---->文件系统(用户)这个目录 找到photodata这个文件夹,将photos.sqlite文件删除 最重要的一步来了. ...

  8. mysql 存储过程 有数据修改 没数据插入

    BEGIN DECLARE sid INT(10) DEFAULT 0; DECLARE money INT(10) DEFAULT 0; DECLARE row_count INT; DECLARE ...

  9. Switch 选择结构

    switch 选择器 一.语法 switch(变量名){ case 情况1: //代码块 break: case 情况1: //代码块 break: default(默认): //代码块 break: ...

  10. WordPaster2产品介绍

    更新WordParser组件,集成ImagePaster组件功能.完善粘贴剪帖板图片,粘贴电脑图片文件,粘贴word,粘贴excel逻辑. 大幅度优化和精简js代码,js代码行数从1932行减少到97 ...