一、基于计数器的迭代

  • 格式
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. PHP 之websocket实现聊天室功能

    一.功能界面 具体的详细代码:https://github.com/yangsphp/websocket-master/tree/master 二.具体代码实现 1.前端代码如下 <!DOCTY ...

  2. Map 键值对 set get delete

  3. mybatis 项目配置

    第一:environments MyBatis 支持多个环境,可以任意配置: 第二:transactionManager MyBatis 支持两种类型的事务管理器:JDBC 和 MANAGED(托管) ...

  4. CAD处理键盘按钮被释放(com接口VB语言)

    主要用到函数说明: MxDrawXCustomEvent::KeyUp 键盘按钮被释放,详细说明如下: 参数 说明 iVk 是按钮码,如F8,的值为#define VK_F8 0x77 返回0消息继续 ...

  5. Eclipse安装和使用TFS

    第一步下载Tfs插件 去微软官网下载https://www.microsoft.com/en-us/download/details.aspx?id=4240 点击 选择下载 随便放置到一个本地或者服 ...

  6. 1. Python中的基本数据类型、运算、变量

    本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本数据类型.运算.变量 1. 基本数据类型 1.1 整数 py可以处理任意大小的整数,例如123,1234567891324 ...

  7. BZOJ 1603 USACO 2008 Oct. 打谷机

    [题解] 水题.. 保存连接方式,按顺序处理即可. #include<cstdio> #include<algorithm> using namespace std; int ...

  8. PAT 1047. Student List for Course

    Zhejiang University has 40000 students and provides 2500 courses. Now given the registered course li ...

  9. 一个电商项目的Web服务化改造2:现有项目的5个问题

         最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA.      有点挑战,做完了,会有很大进步, 1.现有项目的问题   1.1代码风格不统一     不同的 ...

  10. 学习记录--如何将exec执行结果放入变量中?

    declare @num int, ) set @sqls='select @a=count(*) from tb ' exec sp_executesql @sqls,N'@a int output ...