Go by Example-循环
Go By Example-循环语句
Go和其他大多数语言不太一样,没有While和Do-Whiile形式的循环,只有一个for,来实现循环。
基本结构
for循环的基本结构是这个样子
for 变量;条件;增量{内容}
首先,区别于其他语言for循环的{}前面的部分,没有括号。
然后{}里必须写内容,不能为空。;之间的内容,可以随意省略
通常写法,一个完整的for循环
for a:=0;a<5;a++{
fmt.Println(a)
}
第一部分是一个赋值的操作,第二部分是一个判断条件,第三部分是一个增量的设定。
Go的for循环比较灵活
我们也可以只写第一部分
for i := 1; ; {
fmt.Printf("i=%d\n",i)
if i > 10 {
break
}
i++
}
如果只写第一部分,判断条件和增量设定就要在循环过程设置了,比如这里使用了if条件。
或者只写第二部分
var j int =1
for ; j<5; {
fmt.Printf("j=%d\n",j)
j++
}
当然也可以只写第三部分
var k int =1
for ; ;k++ {
if k>5{
break
}
fmt.Printf("k=%d\n",k)
}
或者你干脆什么都不写
for ;;{
fmt.Println("无限循环")
break
}
//全省略,一般简写为下面形式
for{
fmt.Println("无限循环")
break
}
因为Go中没有where语句,如果想实现一个无限循环,我们就可以使用这种情况
综合示例
package main
import "fmt"
func main() {
i:=1
for i<=3{
fmt.Println(i)
i++
}
for{
fmt.Println("无限循环")
break
}
here:
for {
fmt.Println("想不到吧")
for j:=0;j<3 ;j++ {
break here
}
}
fmt.Println("通过break添加标签here,跳出双重循环")
}
观察发现你会看到break后面跟了一个here,而这个here在for循环之前出现过一次。
这里的here可以是任何的非Go语言关键字,起到一个类似goto的作用,但是它和goto还不一样。
关于for循环大概可以总结为下面三点
1.break的标签必须在最外层for循环的前面。
2.break的标签执行之后,会继续for循环后面的代码,不会再重新进入循环。
3.break加标签用法,在嵌套的循环中使用。
Go by Example-循环的更多相关文章
- 【.net 深呼吸】细说CodeDom(8):分支与循环
有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- 模仿Linux内核kfifo实现的循环缓存
想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...
- 【JS基础】循环
for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...
- 【python之路4】循环语句之while
1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- JavaScript单线程和浏览器事件循环简述
JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...
- .NET基础 一步步 一幕幕[循环、逻辑语句块]
循环.逻辑语句块 好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...
- Linux进程管理及while循环
目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...
随机推荐
- MySql数据库操作之数据约束
首先数据库的外键是数据库提供的一种完整性约束.在许多数据库的书上也会介绍到,然而对于外键这个完整性性约束究竟应该在数据库端实现,还是在项目业务端实现很多人有着不同的意见. 个人开发(小型应用).数据库 ...
- js控制台不同的打印方式
在控制台单个输出: console.log(...):值 console.info(...):信息 console.debug(...):调试信息 console.warn(...):警告信息 con ...
- SpringBoot properties和yml的区别
一.先附一个yml文件的解析步骤 1.Maven依赖 <dependency> <groupId>org.yaml</groupId> <artifactId ...
- SQLSEVER 同台服务器下不同表 触发器实现数据实时同步
触发器的使用: 1.首先建立两个相同结构的表,两个表明的列的名称不同. student_01 字段 name ; 字段 age ; 字段 class ; student_02 字段 ...
- 【appium】踩过的坑
1.appium(v1.9.1),在模拟器(蓝叠)上启动app时,软件闪退. 在命令行使用dump aapt dump badging查看包时 name=com.imooc.component.imo ...
- Hive数据库操作
Hive数据结构 除了基本数据类型(与java类似),hive支持三种集合类型 Hive集合类型数据 array.map.structs hive (default)> create table ...
- js 递归获取子节点所有父节点,深度遍历获取第一个子树
前端需求. 递归 深度优先遍历算法 // 查找一个节点的所有父节点 familyTree (arr1, id) { var temp = [] var forFn = function (arr, i ...
- 元类编程--__get__ __set__属性描述符
from datetime import date, datetime import numbers class IntField: #数据描述符,实现以下任意一个,都会变为属性描述符 def __g ...
- PowerMockito单元测试中的Invalid use of argument matchers问题详解
首先,简单说说PowerMockito进行单元测试的三部曲: 打桩,即为非测试目标方法设置返回值,这些返回值在测试目标方法中被使用.执行测试,调用测试目标方法.验证测试结果,如测试方法是否被执行,测试 ...
- Codeforces Round #510 (Div. 2) C. Array Product
题目 题意: 给你n个数,有两种操作,操作1是把第i个位置的数删去, 操作2 是把 a[ j ]= a[ i ]* a[ j ],把a[ i ]删去 .n-1个操作以后,只剩1个数,要使这个数最大 . ...