博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go - 循环
阅读量:4334 次
发布时间:2019-06-07

本文共 3367 字,大约阅读时间需要 11 分钟。

目录

概述

前几篇文章分享了 array 数组、slice 切片、map 集合,这篇文章分享如何循环获取里面的元素,同时也是对前几篇文章的复习。

本篇文章会用到的关键字 for、range、break、continue、goto、switch。

循环 array

//demo_18.gopackage mainimport (    "fmt")func main() {    person := [3] string {"Tom", "Aaron", "John"}    fmt.Printf("len=%d cap=%d array=%v\n", len(person), cap(person), person)        fmt.Println("")    //循环    for k, v := range person {        fmt.Printf("person[%d]: %s\n", k, v)    }    fmt.Println("")    for i := range person {        fmt.Printf("person[%d]: %s\n", i, person[i])    }    fmt.Println("")    for i := 0; i < len(person); i++ {        fmt.Printf("person[%d]: %s\n", i, person[i])    }    fmt.Println("")    //使用空白符    for _, name := range person {        fmt.Println("name :", name)    }}

运行结果:

389840-20190711133159820-812014565.png

循环 slice

//demo_19.gopackage mainimport (    "fmt")func main() {    person := [] string {"Tom", "Aaron", "John"}    fmt.Printf("len=%d cap=%d slice=%v\n", len(person), cap(person), person)    fmt.Println("")    //循环    for k, v := range person {        fmt.Printf("person[%d]: %s\n", k, v)    }    fmt.Println("")    for i := range person {        fmt.Printf("person[%d]: %s\n", i, person[i])    }    fmt.Println("")    for i := 0; i < len(person); i++ {        fmt.Printf("person[%d]: %s\n", i, person[i])    }    fmt.Println("")    //使用空白符    for _, name := range person {        fmt.Println("name :", name)    }}

运行结果:

389840-20190711133210892-223225706.png

循环 map

//demo_20.gopackage mainimport (    "fmt")func main() {    person := map[int]string{        1 : "Tom",        2 : "Aaron",        3 : "John",    }    fmt.Printf("len=%d map=%v\n", len(person), person)    fmt.Println("")    //循环    for k, v := range person {        fmt.Printf("person[%d]: %s\n", k, v)    }    fmt.Println("")    for i := range person {        fmt.Printf("person[%d]: %s\n", i, person[i])    }    fmt.Println("")    for i := 1; i <= len(person); i++ {        fmt.Printf("person[%d]: %s\n", i, person[i])    }    fmt.Println("")    //使用空白符    for _, name := range person {        fmt.Println("name :", name)    }}

运行结果:

389840-20190711133223065-1586163784.png

break

跳出当前循环,可⽤于 for、switch、select。

//demo_21.gopackage mainimport "fmt"func main() {    for i := 1; i <= 10; i++ {        if i == 6 {            break        }        fmt.Println("i =", i)    }}

运行结果:

389840-20190711133232964-1355005128.png

continue

跳过本次循环,只能用于 for。

//demo_22.gopackage mainimport "fmt"func main() {    for i := 1; i <= 10; i++ {        if i == 6 {            continue        }        fmt.Println("i =", i)    }}

运行结果:

389840-20190711133242473-1429684181.png

goto

改变函数内代码执行顺序,不能跨函数使用。

//demo_23.gopackage mainimport "fmt"func main() {    fmt.Println("begin")    for i := 1; i <= 10; i++ {        if i == 6 {            goto END        }        fmt.Println("i =", i)    }    END :        fmt.Println("end")}

运行结果:

389840-20190711133252359-51173195.png

switch

//demo_24.gopackage mainimport "fmt"func main() {    i := 1    fmt.Printf("当 i = %d 时:\n", i)    switch i {        case 1:            fmt.Println("输出 i =", 1)        case 2:            fmt.Println("输出 i =", 2)        case 3:            fmt.Println("输出 i =", 3)            fallthrough        case 4,5,6:            fmt.Println("输出 i =", "4 or 5 or 6")        default:            fmt.Println("输出 i =", "xxx")    }}

运行结果:

当 i = 1 时:输出 i = 1

当 i = 2 时:输出 i = 2

当 i = 3 时:

输出 i = 3

输出 i = 4 or 5 or 6

当 i = 4 时:输出 i = 4 or 5 or 6

当 i = 7 时:输出 i = xxx

结论:

  • 默认每个 case 带有 break
  • case 中可以有多个选项
  • fallthrough 不跳出,并执行下一个 case

推荐阅读

本文欢迎转发,转发请注明作者和出处,谢谢!

转载于:https://www.cnblogs.com/xinliangcoder/p/11169416.html

你可能感兴趣的文章
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_04.Spring的常用注解_3 用于创建的Component注解
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_3、快速创建SpringBoot应用之手工创建web应用...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_04.ssm整合之编写SpringMVC框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_5、SpringBoot2.x的依赖默认Maven版本...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_08.ssm整合之Spring整合MyBatis框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_9、SpringBoot基础HTTP其他提交方法请求实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_12、SpringBoot2.x文件上传实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_19、SpringBoot个性化启动banner设置debug日志...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_20、SpringBoot2.x配置全局异常实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第5节 SpringBoot部署war项目到tomcat9和启动原理讲解_23、SpringBoot2.x启动原理概述...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_21、SpringBoot2.x配置全局异常返回自定义页面...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_34、SpringBoot整合Mybatis实操和打印SQL语句...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_35、事务介绍和常见的隔离级别,传播行为...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍...
查看>>