概述

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

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

循环 array

//demo_18.go
package main import (
"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)
}
}

运行结果:

循环 slice

//demo_19.go
package main import (
"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)
}
}

运行结果:

循环 map

//demo_20.go
package main import (
"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)
}
}

运行结果:

break

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

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

运行结果:

continue

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

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

运行结果:

goto

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

//demo_23.go
package main import "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")
}

运行结果:

switch

//demo_24.go
package main import "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

推荐阅读

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

最新文章

  1. Excel导入导出,通过datatable转存(篇一)
  2. OC-弱语法
  3. EntityFramework更新数据
  4. Java中HashMap遍历的两种方式
  5. C# 特性 Attribute
  6. android-监听网络状态
  7. FireDAC
  8. Address already in use: JVM_Bind错误的解决
  9. iOS异步处理
  10. 2017-2-23 C#基础 中间变量
  11. windows与linux多线程对比
  12. Junit4 之 Assert 静态方法介绍
  13. 使用Hexo搭建个人博客的终极资料
  14. .net导出Excel几种方式比较
  15. spring cloud Hystrix监控面板Hystrix Dashboard和Turbine
  16. echarts移除百度地图logo方法
  17. 牛客OI赛制测试赛3游记
  18. C++连接Mysql数据库操作
  19. [调试][程序打印]当printf不能用时,使用C++的不定参数来搞定OutputDebugString打印
  20. Servlet打印HTML页面乱码问题

热门文章

  1. strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l, setlocale(LC_CTYPE, &quot;Japanese_Japan&quot;)(MSDN的官方示例)
  2. zendframework 初始化配置
  3. C# TCP 通讯
  4. linux命令行模式下实现代理上网 专题
  5. 【C#】解决MouseHook捕获鼠标动作,在有些电脑上SetWindowsHookEx失败返回0的问题
  6. Windows 10 UWP 部署
  7. 企业级架构 MVVM 模式指南 (WPF 和 Silverlight 实现) 译(3)
  8. new和delete必须成对出现吗?【网上集合贴+个人总结】
  9. 如何在 Xcode 中进行 Qt 开发(可使用使用 Homebrew 来安装qt)
  10. MotionManager 陀螺仪实现方式