Go 循环 (for)
循环类型
for:
for a := 0; a < 10; a ++{
fmt.Println(a)
}
在执行结束后 a == 10
while:
a := 0
for a < 10{
fmt.Println(a)
a ++
}
while true:
a := 0
for {
fmt.Println(a)
a ++
}
label
label 用于标记跳转的位置,可用于 break continue goto
label 名 + ':' 组成一个 label
示例:
未使用 label,continue 只能跳过内层循环
package main
import "fmt"
func main() {
for i := 0; i < 3; i ++ {
for j := 0; j <= 3; j ++ {
if j == i{
continue
}
fmt.Println(i, j)
}
}
}
使用 label,continue 可以跳过外层循环
package main
import "fmt"
func main() {
LABEL:
for i := 0; i < 3; i ++ {
for j := 0; j <= 3; j ++ {
if j == i{
continue LABEL
}
fmt.Println(i, j)
}
}
}
goto:
不建议使用 goto
package main
import "fmt"
func main() {
var i = 1
LOOP1:
for i < 10 {
fmt.Println(i)
i ++
if i % 2 == 0 {
goto LOOP2
}
}
LOOP2:
for i < 10 {
fmt.Println("even:", i)
i ++
goto LOOP1
}
}
输出结果:
1
even: 2
3
even: 4
5
even: 6
7
even: 8
9
当 i 为奇数时,在打印出 i 的值之后,i 变为偶数,从 LOOP1 跳入 LOOP2,在 LOOP2 打印出 i 的值后,i 变为奇数,跳入 LOOP1
for range
for range 用来循环数组、切片等
示例:
func main() {
a := "hello world"
for i, v := range a {
fmt.Printf("%d, %c\n", i, v)
}
}
输出结果:
0, h
1, e
2, l
3, l
4, o
5,
6, w
7, o
8, r
9, l
10, d
i 为索引,v 为值
只读
由于 for range 遍历的值都只是原来值的复制,所以不能通过 for range 修改原来的值,所以 for range 获得的值可以看作是只读的
示例:
func main() {
a := []int{1, 2, 3}
fmt.Printf("before: %v\n", a)
for i, v := range a {
v = i
fmt.Printf("v: %v\n", v)
}
fmt.Printf("after: %v\n", a)
}
输出结果:
before: [1 2 3]
v: 0
v: 1
v: 2
after: [1 2 3]
修改之后切片内的数值应该是 [0 1 2] 但是实际上并没有发生改变
Go 循环 (for)的更多相关文章
- 【.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,在系统引导过程中启动的进程 ...
随机推荐
- 微信小程序连接低功率蓝牙控制单片机上硬件设备
1.软件部分介绍 微信小程序是一种新的应用,用户不需要下载应用只用通过扫二维码或者打开链接就能使用,使用完后不需要卸载,直接关闭就行了.微信在2017年初推出微信小程序开发环境.任何企业,媒体,个人都 ...
- bat批处理执行python 的几种方式
第一种方式:@echo off C: cd C:\Users\administrator\Desktopstart python apidemo.py exit第二种方式: start cmd /K ...
- json属性里面出现特殊字符怎么获取属性
直接上代码. 这样的 获取这个object后需要获取里面的书属性,但是正常情况下是XX.属性名.但是属性名有特殊符号.这时候我们可以这样. XX['属性名']['属性名']....可以一直这样写 XX ...
- 连接 sql
java连接sqlserver 1 创建 Dynamic Web Project项目 在WebContent/WEB-INF/lib中添加sqljdbc42.jar 2 在class文件里连接数据库 ...
- 强大的django-debug-toolbar,django项目性能分析工具
强大的django-debug-toolbar,django项目性能分析工具 给大家介绍一个用于django中debug模式下查看网站性能等其他信息的插件django-debug-toolbar 首先 ...
- div块水平居中,垂直居中
水平居中一个div想要水平居中于它的父div中只需要给它加css属性margin:0 auto; 即可 <!DOCTYPE html> <html> <head> ...
- getOutputStream() has already been called for this response 从了解到解决
一.背景说明 在tomcat的localhost.log日志中时长见到 getOutputStream() has already been called for this respon ...
- Nim 游戏
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者.你作为先手. 你们是聪明人,每一步都是最优解. 编写一个函数,来判断 ...
- echarts 在 vue-awesome-swiper中无法点击
回退vue-awesome-swiper版本到2.6.7 即可npm install vue-awesome-swiper@2.6.7 --save
- Java基础(七)
左连接,右连接,内连接,全连接的区别 左连接:返回左表所有行,右表没有匹配行则返回null 右连接:返回右表所有行,左表没有匹配行则返回null 内连接:返回左右表共有行 全连接:返回左右表所有行,无 ...