Golang 基础(九)循环

Overview

  • for语法
package main

func main() {
	for {
	}
}
  • for循环的四种形式
    • 死循环
    • 条件判断
    • 变量&条件
    • 变量&条件&赋值
  • continue

        在for循环中,当循环遇到continue关键字时,会停止当前循环,开始下一次循环

  • break

        在for循环中,当循环遇到break关键字时,会跳出该循环 

  • for循环的标签

        对for进行打标签,然后可以通过break和continue实现多层循环的跳出和终止

  • goto

        跳跃到指定的行,然后向下执行代码

Description

1)For循环 

1.猜年龄,一直提示用户输入年龄,如果比18大,则显示猜测的结果大了,如果比18小,则显示猜测的结果小了,只有输入等于18,显示猜测结果正确,然后退出循环

package main

import "fmt"

func main() {
	var age int
	var flag bool = true
	for flag {
		fmt.Print("Please enter your age: ")
		fmt.Scan(&age)
		if age > 18 {
			fmt.Println("大了")
		} else if age < 18 {
			fmt.Println("小了")
		} else if age == 18 {
			fmt.Println("正确")
			flag = false
		}

	}
}

 2.使用循环输出1-100所有整数

package main

import "fmt"

func main() {
	for i := 1; i < 101; i++ {
		fmt.Println(i)
	}
}

 3.使用循环输出1 2 3 4 6 7 8 9 10,即:10以内除了5以外的整数

package main

import "fmt"

func main() {
	for i := 1; i < 11; i++ {
		if i != 5 {
			fmt.Println(i)
		}
	}
}

 4.输出1-10内的所有奇数

package main

import "fmt"

func main() {
	for i := 1; i < 11; i++ {
		if i%2 == 1 {
			fmt.Println(i)
		}
	}
}

 5.输出1-10内的所有偶数

package main

import "fmt"

func main() {
	for i := 1; i < 11; i++ {
		if i%2 == 0 {
			fmt.Println(i)
		}
	}
}

6.求1-100的所有整数的和

package main

import "fmt"

func main() {
	n := 0
	for i := 1; i < 101; i++ {
		n = n + i
	}
	fmt.Println(n)
}

7.输出10-1所有整数

package main

import "fmt"

func main() {
	for i := 10; i > 0; i-- {
		fmt.Println(i)
	}
}

2)continue 

1.Continue: 遇到continue停止当次循环,执行下一次循环

package main

import "fmt"

func main() {
	for {
		fmt.Println("Golang")
		continue
		fmt.Println("Linux")
	}
}

 这是一个死循环,当遇到continue时,则停止当次循环,开始执行下一次循环

3)多循环嵌套

package main

import "fmt"

func main() {
	for i := 1; i < 4; i++ {
		for j := 1; j < 5; j++ {
			if i == 3 {
				continue
			}
			fmt.Println(i, j)
		}
	}
}

 4)break

 当循环遇到break,跳出循环

package main

import "fmt"

func main() {
	for {
		fmt.Println("Golang")
		break
		fmt.Println("Linux")
	}
}

 多循环嵌套

package main

import "fmt"

func main() {
	for i := 1; i < 4; i++ {
		for j := 1; j < 5; j++ {
			if j == 3 {
				break
			}
			fmt.Println(i, j)
		}
	}
}

 5)for循环的标签

 1.对for循环打标签 标签: for {},continue终止当前标签指向的循环

package main

import "fmt"

func main() {
f1:
	for i := 1; i < 4; i++ {
		for j := 1; j < 5; j++ {
			if j == 3 {
				continue f1
			}
			fmt.Println(i, j)
		}
	}
}

 ​当循环开始,1 1,1 2, 1 3时,j=3,则满足if条件,continue 则跳出循环,而此刻continue后是外层循环的标签f1,则是跳出外层循环,所以结果是1 1,1 2, 2 1, 2 2,3 1,3 2

2.对for循环打标签,标签:for{},break跳出当前标签指向的循环

package main

import "fmt"

func main() {
f1:
	for i := 1; i < 4; i++ {
		for j := 1; j < 5; j++ {
			if j == 3 {
				break f1
			}
			fmt.Println(i, j)
		}
	}
}

 ​同样,循环开始是1 1, 1 2,1 3,当j==3时满足if条件,则进行break跳出当前循环,此时break f1是跳出指定标签的循环,则跳出外层循环,结果则是1 1, 1 2

6)Goto

对指定行打标签,goto直接跳转到指定行然后执行代码

package main

import "fmt"

func main() {
	fmt.Print("这是银行系统,请输入姓名办理业务: ")
	var name string
	fmt.Scan(&name)
	if name == "Jeremy" {
		goto VVIP
	} else if name == "Kelvin" {
		goto VIP
	}
	fmt.Println("预约")
VIP:
	fmt.Println("排队")
VVIP:
	fmt.Println("办理业务")
}

Golang 基础(十)变量/指针内存原理-CSDN博客

### Golang 中 `for` 循环的用法 在 Go 编程语言中,`for` 是唯一的循环结构。它具有多种形式来满足不同的需求。 #### 基本语法 最简单的 `for` 循环由初始化语句、条件表达式和后续语句组成[^1]: ```go sum := 0 for i := 0; i < 10; i++ { sum += i } ``` 上述代码展示了如何通过传统的三部分定义来进行迭代操作。这里变量 `i` 初始化为零,并且每次执行完循环体之后都会增加一单位直到达到终止条件为止。 #### 使用 range 关键字遍历切片或映射 当需要访问集合中的每一个元素时,可以利用 `range` 来简化过程[^2]: 对于数组或者 slice: ```go numbers := []int{1, 2, 3, 4, 5} for index, value := range numbers { fmt.Printf("Index=%d Value=%d\n", index,value ) } ``` 如果只关心值而不需要索引的话,则可以选择忽略第一个返回参数 `_`, 如下所示: ```go names := []string{"Alice","Bob"} for _, name := range names{ println(name) } ``` 同样地,这种方法也适用于 map 数据类型的处理[^3]: ```go ages := make(map[string]int) ages["John"] = 27 ages["Paul"] = 28 for key, val := range ages { fmt.Println(key,"is",val,"years old.") } ``` #### 无限循环 有时候可能希望创建一个持续运行的任务直至特定事件发生停止之情况下来实现永不停止的功能[^4], 可以省略掉所有的控制成分从而形成死循环模式: ```go package main import "time" func main(){ ticker := time.NewTicker(1 * time.Second) for _= range ticker.C { // Do something every second. } } ``` 以上实例演示了一个定时器功能,其中每隔一秒就会触发一次动作。 #### 总结 Go 提供了灵活多样的 `for` 结构适应不同场景下的应用开发需求。无论是基础数值计算还是复杂的数据集管理都能找到合适的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值