Go 循环

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

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

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

for循环示例

示例 1

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

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 for i := 0; i < 5; i++ { 9 fmt.Println(i) 10 } 11}

结果:

10 21 32 43 54

示例 2

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

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 for i := 0; i <= 100; i += 10 { 9 fmt.Println(i) 10 } 11}

结果:

10 210 320 430 540 650 760 870 980 1090 11100

continue语句

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

示例

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

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 for i := 0; i < 5; i++ { 9 if i == 3 { 10 continue 11 } 12 fmt.Println(i) 13 } 14}

结果:

10 21 32 44

break语句

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

示例

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

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 for i := 0; i < 5; i++ { 9 if i == 3 { 10 break 11 } 12 fmt.Println(i) 13 } 14}

结果:

10 21 32

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

嵌套循环

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

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

示例

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 adj := [2]string{"大", "美味"} 9 fruits := [3]string{"苹果", "橙子", "香蕉"} 10 for i := 0; i < len(adj); i++ { 11 for j := 0; j < len(fruits); j++ { 12 fmt.Println(adj[i], fruits[j]) 13 } 14 } 15}

结果:

1大 苹果 2大 橙子 3大 香蕉 4美味 苹果 5美味 橙子 6美味 香蕉

range关键字

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

range关键字的用法如下:

语法

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

示例

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

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 fruits := [3]string{"苹果", "橙子", "香蕉"} 9 for idx, val := range fruits { 10 fmt.Printf("%v\t%v\n", idx, val) 11 } 12}

结果:

10 苹果 21 橙子 32 香蕉

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

示例

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

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 fruits := [3]string{"苹果", "橙子", "香蕉"} 9 for _, val := range fruits { 10 fmt.Printf("%v\n", val) 11 } 12}

结果:

1苹果 2橙子 3香蕉

示例

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

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 fruits := [3]string{"苹果", "橙子", "香蕉"} 9 for idx, _ := range fruits { 10 fmt.Printf("%v\n", idx) 11 } 12}

结果:

10 21 32

最后

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

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

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

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

PPDB:今晚老齐直播

【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。

VBox 启动虚拟机失败

在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.