一、基于计数器的迭代

  • 格式
for 初始化语句; 条件语句; 修饰语句{}

  • 实例
package main

import "fmt"

func main(){
for i:=0;i<10;i++{
fmt.Print(i)
}
fmt.Println()
/*
执行步骤:
1、 初始化,条件判断,条件成立执行循环体,不成立结束for循环
2、条件成立执行循环体,i++,条件判断
3、条件成立执行循环体,i++,条件判断
4、...
5、条件不成立结束循环体
*/ // 求 100 以内偶数之和
var sum int = 0
for i:=0;i <= 100;i++{
if i%2 == 0{ // 取余为0 则为偶
sum += i
}
}
fmt.Println(sum) // 99乘法表
for i:=1;i<10;i++{
for j:=1 ;j<=i;j++{
fmt.Printf("%d * %d = %d ",j,i,j*i)
}
fmt.Println("")
}
}

0123456789


二、基于条件判断的迭代

  • 格式
for 条件语句{}

  • 实例
package main

import "fmt"

func main(){
// 求 100以内 奇数之和
var sum,i int // 多相同类型变量声明
i = 0
for i<=100{
if i % 2 != 0{
sum += i
}
i++
}
fmt.Println(sum) // 也可以这样
var sum1,j int
j = 0
for true{ // 条件永远为 true
if j % 2 != 0{
sum1 += j
}
j++
if j > 100{
break // 中断当前循环,或跳出当前循环体
}
}
fmt.Println(sum1)
}

三、无限循环

  • 格式
for{}
// 与 for true {},行为是一样的
//
  • 实例
package main

import "fmt"

func main(){
// 输入内容并打印在终端
var content string
for {
fmt.Print("请输入内容:")
fmt.Scanf("%s\n",&content) // &content 是content的内存地址
fmt.Println("你输入的内容是:",content)
}
}

四、for-range语法

  • 格式

    这是 Go 特有的一种的迭代结构,您会发现它在许多情况下都非常有用。它可以迭代任何一个集合(包括数组和 map,详见第 7 和 8 章)。语法上很类似其它语言中 foreach 语句,但您依旧可以获得每次迭代所对应的索引
for ix, val := range coll { }
  • 实例
package main

import (
"fmt"
) func main(){
str := "jmz is good man"
for index,v := range str{
// v 是 rune 类型,所以需要转化成string 类型
fmt.Println(index , " - " , string(v))
} str1:= "from 中国"
for _,v := range str1{ // _ 省略 第一个返回参数
fmt.Println(v, " - ", string(v))
} // 关于rune类型 一个字符串是unicode编码的字符。
// 下面的结果处理与上面的一样
value := []rune(str1) // 切片类型 ,将str1 转成切片类型
i := 0
for i<len(value){
fmt.Println(string(value[i]))
i++
}
}
  • 统计字符中相同字符的个数
package main

import "fmt"

func main(){
str := "上海自来水来自海上,are you know?hahahah"
count := make(map[string]int) // map 类型(引用类型)
/*
// count := make(map[string]int) 相当于:
var count map[string]int
count = make(map[string]int)
// 后面会着重讲解
*/
for _,v := range str{
count[string(v)] += 1 // 将rune 转化成string : string(v)
}
for k,v := range count{ // map 类型也可以for-range
fmt.Println(k," - ",v)
}
}

五、Break 与 continue

  • 解释
break: 跳出当前循环体(结束循环体)
continue: 跳过本次循环,进入下一次循环
  • 实例
package main

import "fmt"

func main(){
for i:= 0;i<10;i++{
if i == 3{
continue
}
if i == 6{
break
}
fmt.Println(i)
}
}
输出结果:
0
1
2
4
5

猜猜结果

  • 猜猜一
for i:=0;i<10;i++{
var j int
fmt.Println(j)
j = 5
}

10个0,j 是局部变量,每次循环都会重新声明,初始值,所以每次都是0

  • 猜猜二
for i:=0;;i++{
fmt.Println(i)
}

无限循环,一直累加

  • 猜猜三
for i:=0;i<10;{
fmt.Println(i)
}

无限循环,都是0,没有累加

  • 猜猜四
	for i,j:=2,10;i<j;{
fmt.Println(i," - ",j)
i *= 2
j ++
}

go之for循环的更多相关文章

  1. 【.net 深呼吸】细说CodeDom(8):分支与循环

    有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...

  2. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  3. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  4. 模仿Linux内核kfifo实现的循环缓存

    想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...

  5. 【JS基础】循环

    for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...

  6. 【python之路4】循环语句之while

    1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...

  7. To Java程序员:切勿用普通for循环遍历LinkedList

    ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...

  8. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

  9. .NET基础 一步步 一幕幕[循环、逻辑语句块]

    循环.逻辑语句块   好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...

  10. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

随机推荐

  1. redis在linux下安装以及扩展

    安装过redis后发现回头忘了,今天重新安装记录下 首先 我是在home下创建redis文件   mkdir  redis 然后直接用wget安装 wget http://download.redis ...

  2. H5 应用程序缓存(离线缓存)

    离线缓存这个功能的实现有以下步骤: 1,以nginx做web服务器为例,在mime.types文件中添加一行:text/cache-manifest     manifest,作用是为了让服务器识别该 ...

  3. idea热更新配置

    idea部署热启动如下,经过本人实验 在这里只能选择exploded因为它支持热部署 在这里选择如下 到这里已经完成热部署了,如果有问题欢迎反馈给我,我会及时回复

  4. jQuery匹配id 批量修改css属性

    <ul id="foreignCurrencyTree_1_ul"> <li id="foreignCurrencyTree_11_li"&g ...

  5. java常见知识

    在JSP页面获取当前项目名称的方法: 方法1: <%= this.getServletContext().getContextPath() %> 方法2: 使用EL表达式 ${pageCo ...

  6. 手机版地图api

    手机版地图api一: <iframe style="height:300px;" src="http://map.baidu.com/mobile/webapp/s ...

  7. Navicat premium连接Oracle报ORA-12545错误

    1:ORA-12545 原因: 这里填localhost,127.0.0.1,或者远程ip.

  8. 2019字节跳动冬令营day7娱乐赛19题题解

    啊没去听讲题,也没发纸质题解,电子版题解也没有 为最后几个unsolve自闭了一段时间才全都A掉 3个队友写的我没看的题通过人数蛮多就不管了 题目地址:https://pan.baidu.com/s/ ...

  9. angular的又一本好书

    MANNING出的<ANGULAR.JS IN ACTION>. 比上本看完的书<ANGULAR ESSENTIAL>多了一些有全局性的东东. 八个关键概念:MODULE,CO ...

  10. Servlet的HttpServletResponse输出

    了解其中的一些字符设置,PrintWriter输出等.. form.html: <!DOCTYPE html> <html> <head> <title> ...