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,在系统引导过程中启动的进程 ...
随机推荐
- php中的特殊标签
参考:https://www.freebuf.com/column/212586.html 今天看到这篇文章讲到了ctf中的一些关于php标签的小姿势,我虽然不打ctf,但是平常做php的代码审计也经 ...
- (一)react-native开发系列之Mac开发环境配置
写在前面 在开始之前,先说下选择react-native的背景原因 最近一年来,公司为了节省开发成本,以及降低维护成本,指派我开始做起前端开发app的工作,我和公司的小伙伴们就开始了漫长的app开发之 ...
- mysql主从部署
一.安装环境 1.系统环境 系统 IP 主机名 说明 server_id centos6.7 192.168.0.173 master 数据库:主 173 centos6.7 192.168.0.1 ...
- html的基础知识点
小编为大家带来html的基础知识Web 标准的好处让Web的发展前景更广阔 内容能被更广泛的设备访问更容易被搜寻引擎搜索降低网站流量费用使网站更易于维护提高页面浏览速度Web 标准构成Web标准不是某 ...
- BIOS+MBR操作系统引导方式
1. 主引导记录(Master Boot Record,缩写:MBR) 主引导记录又叫做主引导扇区,是计算机开机后启动操作系统时所必须要读取的硬盘首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)= ...
- Java下的tinylog日志打印
做个笔记. 做某个功能时需要DEBUG调试日志,但是直接System.out.println 是打印在终端,有些情况下是看不到输出的,所以需要用日志框架去打印输出值. 经过搜索完以后发现Logback ...
- SQL SERVER 语句转换格式函数Cast、Convert
CAST.CONVERT都可以执行数据类型转换.在大部分情况下,两者执行同样的功能,不同的是CONVERT还提供一些特别的日期格式转换,而CAST没有这个功能. CAST是ANSI兼容的,推荐使用CO ...
- main方法中参数"String[ ] args"详解
1.在编写完一个有主方法的java文件时,需要在cmd窗口中先编译此java文件(javac xxx.java),然后再运行(java xxx) 其实在运行java xxx的时候如果后面跟着参数用空格 ...
- prometheus监控redis,redis-cluster
Prometheus监控redis使用的是redis_exporter, 作者GitHub: https://github.com/oliver006/redis_exporter 需要说明的是: r ...
- 基于FPGA自适应串口通信(Auto Baud Rate)
做的课设,相当于复习了一遍verilog. 实现了 1.接收端固定模式:8N1 BAUD:921600. 2.发送端8N1,任意波特率(不取极端值). 3.数码管显示波特率(16进制). 用了 1.两 ...