返回

Go 语言系列19:循环语句

发布时间:2023-09-07 06:08:19 220


循环语句 可以用来重复执行某一段代码。在 C 语言中,循环语句有 ​​for​​​ 、 ​​while​​​ 和 ​​do while​​​ 三种循环。但在 Go 中只有 ​​for​​​ 一种循环语句。下面是 ​​for​​ 循环语句的四种基本模型:

// for 接三个表达式
for initialisation; condition; post {
code
}
// for 接一个条件表达式
for condition {
code
}
// for 接一个 range 表达式
for range_expression {
code
}
// for 不接表达式
for {
code
}

接下来我们对每一种模型进行讲解。


Go 语言系列19:循环语句_控制变量

接一个条件表达式

Go 语言系列19:循环语句_控制变量_02


下面的例子利用 ​​for​​​ 循环打印 ​​0​​​ 到 ​​3​​ 的数值:

num := 0
for num < 4 {
fmt.Println(num)
num++
}

运行该程序输出如下:

0
1
2
3

Go 语言系列19:循环语句_控制变量

接三个表达式

Go 语言系列19:循环语句_控制变量_02


​for​​ 后面接的这三个表达式,各有各的用途:

  • 第一个表达式(​​initialisation​​):初始化控制变量,在整个循环生命周期内,只执行一次;
  • 第二个表达式(​​condition​​):设置循环控制条件,该表达式值为 ​​true​​ 时循环,值为 ​​false​​ 时结束循环;
  • 第三个表达式(​​post​​):每次循环完都会执行此表达式,可以利用其让控制变量增量或减量。

这三个表达式,使用 ​​;​​ 分隔。

for num := 0; num < 4; num++ {
fmt.Println(num)
}

该程序的输出和上面的例子是等价的。这里注意一点,在第一个表达式声明的变量 ​​num​​​ 的作用域只在 ​​for​​ 循环里面有效。


Go 语言系列19:循环语句_控制变量

接一个 range 表达式

Go 语言系列19:循环语句_控制变量_02


在 Go 中遍历一个可迭代的对象一般使用 ​​for-range​​​ 语句实现,其中 ​​range​​​ 后面可以接数组、切片、字符串等, ​​range​​ 会返回两个值,第一个是索引值,第二个是数据值。

str := "abcd"
for index, value := range str{
fmt.Printf("index %d, value %c\n", index, value)
}

运行该程序输出如下:

index 0, value a
index 1, value b
index 2, value c
index 3, value d

Go 语言系列19:循环语句_控制变量

不接表达式

Go 语言系列19:循环语句_控制变量_02


​for​​​ 后面不接表达式就相当于无限循环,当然,可以使用 ​​break​​ 语句退出循环。

下面两种无限循环的写法等价,但一般使用第一种写法。

// 第一种写法
for {
code
}
// 第二种写法
for ;; {
code
}

下面是一个输出数字 ​​0​​​ 到 ​​3​​ 的例子:

i := 0
for {
if i > 3 {
break
}
fmt.Println(i)
i++
}

运行该程序输出如下:

0
1
2
3

Go 语言系列19:循环语句_控制变量

break 语句

Go 语言系列19:循环语句_控制变量_02


​break​​​ 语句用于终止 ​​for​​​ 循环,之后程序将执行在 ​​for​​​ 循环后的代码。上面的例子已经演示了 ​​break​​ 语句的使用。


Go 语言系列19:循环语句_控制变量

continue 语句

Go 语言系列19:循环语句_控制变量_02


​continue​​​ 语句用来跳出 ​​for​​​ 循环中的当前循环。在 ​​continue​​​ 语句后的所有的 ​​for​​​ 循环语句都不会在本次循环中执行,执行完 ​​continue​​​ 语句后将会继续执行一下次循环。下面的程序会打印出 ​​10​​ 以内的奇数。

for num := 1; num <= 10; num++ {
if num % 2 == 0 {
continue
}
fmt.Println(num)
}

运行该程序输出如下:

1
3
5
7
9

参考文献:

[1] Alan A. A. Donovan; Brian W. Kernighan, Go 程序设计语言, Translated by 李道兵, 高博, 庞向才, 金鑫鑫 and 林齐斌, 机械工业出版社, 2017.




特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
操作系统概念、特征与基本功能 2023-09-07 02:53:09