循环语句是一个编程语言中不可缺少的一部分,循环通常用来完成具有规律性的重复性的操作,例如通过循环计算1到100的累加或者累乘。
for循环
for循环是一个循环控制语句,在go语言中,for循环一共有三种方式
第一种
语法:
for init; condition; post {
// 循环执行的语句
}
在这种循环方式中,可指定循环的次数。
init:赋值表达式,用于给控制变量赋初值
condition:条件表达式,用于控制循环
post:赋值表达式,用于给控制变量做增量或减量
循环执行步骤:
- 通过init给控制变量赋值
- 判断condition是否为true,如果为true则执行循环体内的代码
- 循环体内的代码执行完之后通过post对控制变量进行增量或减量
- 返回第2步继续判断,然后第2、3步持续循环,知道condition为false时跳出循环
代码示例:
package main
import "fmt"
func main() {
// 计算从1到100的累加结果
var sum int
for i := 1; i <= 100; i++ {
sum += i
}
fmt.Println("1到100累加结果为:", sum)
}
运行结果:
第二种
在第一种循环的基础上,init和post不是必须存在,可以没有init或者没有post,或者两个都没有都可以,
语法:
for condition {
// 循环执行的语句
}
代码示例:
package main
import "fmt"
func main() {
// 计算1到10累乘结果
var sum int = 1
i := 1
for i <= 10 {
sum *= i
i++
}
fmt.Println("1到10累乘结果为:", sum)
}
还有一种特殊的循环就是无限循环,无限循环就是表示没有终止条件的循环,这样for循环体中的代码就会无休止的一直执行,在实际开发中要注意避免无限循环情况的发生。
package main
import "fmt"
func main() {
sum := 0
for {
sum++ // 无限循环累加
}
fmt.Println(sum) // 无法输出
}
第三种
第三种循环是用于数组、切片等输出的循环,在这种循环中,需要使用到一个关键字range,range后面紧跟的是需要遍历的数组或切片,range前面可以使用两个变量进行接收数据,第一个变量会接收到数组或切片的下标,第二个变量会接收到数组或切片的值,在循环的过程中,会把数组或切片中的下标和值依次一个个取出来赋值给index和value。
语法:
for index, value := range variable {
// 循环体
}
代码示例:
package main
import "fmt"
func main() {
numbers := [9]int {1,2,3,4,5,6,7,8,9}
for i, v := range numbers {
fmt.Printf("第%d个数是:%d \n", i, v)
}
}
运行结果:
由于数组和切片的下标是从0开始的,所以第一行显示的是第0个数。
tips:数组和切片后面会详细介绍
break
break语句的作用是在循环中跳出循环,或者在switch中执行一个case后跳出swit。
代码示例:
package main
import "fmt"
func main() {
sum := 1
for {
sum++
if sum > 10 {
break
}
}
fmt.Println(sum) // 输出11
}
虽然这里使用的for循环是一个死循环,但是在循环体内进行了判断,当sum的值大于10的时候就跳出循环,所以该循环不会无休止的执行下去,而是会在sum加到11时就跳出循环。
continue
continue和break用法类似,但是和break直接跳出循环不一样的是,continue并不是直接跳出循环,而是结束本轮循环,执行post对控制变量进行增量或减量后进行下一轮循环。
代码示例:
package main
import "fmt"
func main() {
// 计算1到100之间所有奇数的和
var sum int
for i := 1; i <= 100; i++ {
// 当i取余2为0时,则表示当前数为偶数,不参与计算,通过continue跳出本轮循环开始下一轮循环
if i%2 == 0 {
continue
}
sum += i
}
fmt.Println("1到100之间奇数和为:", sum)
}
运行结果:
关注持续更新……