Go 循环

小万哥
• 阅读 169

for循环用于多次执行特定的代码块,每次都可以使用不同的值。每次循环执行都称为一次迭代。for循环可以包含最多三个语句: 语法

for 语句1; 语句2; 语句3 {
   // 每次迭代要执行的代码
}
  • 语句1:初始化循环计数器的值。
  • 语句2:对每次循环迭代进行评估。如果评估为TRUE,则继续循环。如果评估为FALSE,则结束循环。
  • 语句3:增加循环计数器的值。

注意:这些语句不需要作为循环的参数存在,但它们需要以某种形式出现在代码中。

for循环示例

示例 1

以下示例将打印从0到4的数字:

package main

import (
   "fmt"
)

func main() {
   for i := 0; i < 5; i++ {
      fmt.Println(i)
   }
}

结果:

0
1
2
3
4

示例 2

以下示例以十进制计数到100:

package main

import (
   "fmt"
)

func main() {
   for i := 0; i <= 100; i += 10 {
      fmt.Println(i)
   }
}

结果:

0
10
20
30
40
50
60
70
80
90
100

continue语句

continue语句用于跳过一个或多个循环迭代,然后继续执行下一次迭代。

示例

以下示例跳过值为3的情况:

package main

import (
   "fmt"
)

func main() {
   for i := 0; i < 5; i++ {
      if i == 3 {
         continue
      }
      fmt.Println(i)
   }
}

结果:

0
1
2
4

break语句

break语句用于终止循环的执行。

示例

以下示例在i等于3时中断循环:

package main

import (
   "fmt"
)

func main() {
   for i := 0; i < 5; i++ {
      if i == 3 {
         break
      }
      fmt.Println(i)
   }
}

结果:

0
1
2

注意:continuebreak通常与条件一起使用。

嵌套循环

可以将一个循环放在另一个循环内。

在此示例中,“内部循环”将在“外部循环”的每次迭代中执行一次:

示例

package main

import (
   "fmt"
)

func main() {
   adj := [2]string{"大", "美味"}
   fruits := [3]string{"苹果", "橙子", "香蕉"}
   for i := 0; i < len(adj); i++ {
      for j := 0; j < len(fruits); j++ {
         fmt.Println(adj[i], fruits[j])
      }
   }
}

结果:

大 苹果
大 橙子
大 香蕉
美味 苹果
美味 橙子
美味 香蕉

range关键字

range关键字用于更轻松地迭代数组、切片或映射。它返回索引和值。

range关键字的用法如下:

语法

for 索引, 值 := 数组|切片|映射 {
   // 每次迭代要执行的代码
}

示例

以下示例使用range来迭代数组并打印索引和每个值(idx存储索引,val存储值):

package main

import (
   "fmt"
)

func main() {
   fruits := [3]string{"苹果", "橙子", "香蕉"}
   for idx, val := range fruits {
      fmt.Printf("%v\t%v\n", idx, val)
   }
}

结果:

0      苹果
1      橙子
2      香蕉

提示:要仅显示值或索引,可以使用下划线(_)省略其他输出。

示例

在这里,我们想要省略索引(idx存储索引,val存储值):

package main

import (
   "fmt"
)

func main() {
   fruits := [3]string{"苹果", "橙子", "香蕉"}
   for _, val := range fruits {
      fmt.Printf("%v\n", val)
   }
}

结果:

苹果
橙子
香蕉

示例

在这里,我们想要省略值(idx存储索引,val存储值):

package main

import (
   "fmt"
)

func main() {
   fruits := [3]string{"苹果", "橙子", "香蕉"}
   for idx, _ := range fruits {
      fmt.Printf("%v\n", idx)
   }
}

结果:

0
1
2

最后

为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:

公众号搜索Let us Coding知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

看完如果觉得有帮助,欢迎点赞、收藏关注

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Wesley13 Wesley13
2年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
2年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
2年前
Mysql 分区表
DROPTABLEIFEXISTS\frank\_test\;CREATETABLE\frank\_test\(\id\bigint(20)NOTNULLAUTO\_INCREMENTCOMMENT'主键id',\gid\bigint(20)DEFAULT'0'COMMENT'基础表id'
Wesley13 Wesley13
2年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
2年前
MBR笔记
<bochs:100000000000e\WGUI\Simclientsize(0,0)!stretchedsize(640,480)!<bochs:2b0x7c00<bochs:3c00000003740i\BIOS\$Revision:1.166$$Date:2006/08/1117
Stella981 Stella981
2年前
Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)
本文首发于:Jenkins中文社区(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fjenkinszh.cn)!huashan(https://oscimg.oschina.net/oscnet/f499d5b4f76f20cf0bce2a00af236d10265.jpg)
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_