当前位置: 首页 > news >正文

【Go 基础篇】Go语言循环结构:实现重复执行与迭代控制

介绍

循环结构是编程中的重要概念,它允许我们重复执行一段代码块,或者按照一定的条件进行迭代控制。Go语言提供了多种循环结构,包括forwhiledo-while等,用于不同的场景下实现循环操作。本篇博客将深入探讨Go语言中的循环结构,帮助读者更好地理解如何使用不同的循环结构,实现重复执行和迭代控制,以及在实际编程中的应用。

for 循环

for 循环是Go语言中最常用的循环结构,它可以用于实现固定次数的重复执行,也可以根据条件进行迭代控制。

基本的 for 循环

package mainimport "fmt"func main() {for i := 0; i < 5; i++ {fmt.Println(i)}
}

在上面的例子中,通过 for 循环打印出 0 到 4 的数字。

无限循环

package mainfunc main() {for {// 无限循环}
}

在上面的例子中,for 循环没有条件,因此会无限执行循环体。

for 与切片

package mainimport "fmt"func main() {numbers := []int{1, 2, 3, 4, 5}for index, value := range numbers {fmt.Printf("索引:%d,值:%d\n", index, value)}
}

在上面的例子中,通过 for range 循环遍历切片中的元素,获取索引和值。

for range 循环:遍历集合元素

在Go语言中,for range 循环是一种方便遍历集合(如数组、切片、映射、通道等)元素的方式。它可以同时获取元素的索引(或键)和值,使得遍历更加简洁和易读。

遍历切片

package mainimport "fmt"func main() {fruits := []string{"apple", "banana", "orange", "grape"}for index, fruit := range fruits {fmt.Printf("索引:%d,水果:%s\n", index, fruit)}
}

在上面的例子中,我们使用 for range 循环遍历了一个字符串切片 fruits,并通过 indexfruit 分别获取索引和值。

遍历映射

package mainimport "fmt"func main() {scores := map[string]int{"Alice":  90,"Bob":    85,"Charlie": 70,}for name, score := range scores {fmt.Printf("姓名:%s,分数:%d\n", name, score)}
}

在上面的例子中,我们使用 for range 循环遍历了一个映射 scores,并通过 namescore 分别获取键和值。

遍历通道

package mainimport ("fmt"
)func main() {queue := make(chan string, 2)queue <- "one"queue <- "two"close(queue)for item := range queue {fmt.Println(item)}
}

在上面的例子中,我们使用 for range 循环遍历了一个通道 queue,通道在遍历完所有数据后会自动关闭,避免死锁。

使用下划线 _ 忽略索引或值

有时候我们可能只需要其中的一部分信息,可以使用下划线 _ 来忽略不需要的索引或值。

package mainimport "fmt"func main() {numbers := []int{1, 2, 3, 4, 5}for _, number := range numbers {fmt.Println(number)}
}

在上面的例子中,我们使用 _ 来忽略了索引,只遍历了切片中的值。

for range 循环的注意事项

  • for range 循环遍历切片、数组时,会返回索引和值。
  • for range 循环遍历映射时,会返回键和值。
  • for range 循环遍历通道时,会从通道中接收数据,直到通道被关闭。
  • 在遍历时,如果只需要索引而不需要值,可以使用 _ 来忽略。
  • for range 循环遍历过程中,会复制集合中的元素,因此修改副本不会影响原集合。

通过灵活运用 for range 循环,我们可以更加方便地遍历集合中的元素,同时获取索引或键以及对应的值。这样的循环结构使得代码更加简洁和可读,提高了编程的效率。

while 循环

Go语言中没有明确的 while 关键字,但我们可以使用 for 循环来实现类似的效果。

package mainimport "fmt"func main() {i := 0for i < 5 {fmt.Println(i)i++}
}

在上面的例子中,我们使用 for 循环实现了类似 while 循环的效果,当 i 小于 5 时,执行循环体。

do-while 循环

Go语言中也没有明确的 do-while 关键字,但我们可以使用 for 循环来实现类似的效果。

package mainimport "fmt"func main() {i := 0for {fmt.Println(i)i++if i >= 5 {break}}
}

在上面的例子中,我们使用 for 循环实现了类似 do-while 循环的效果,先执行循环体,然后判断条件是否满足。

breakcontinue

在循环中,break 关键字用于终止循环,而 continue 关键字用于跳过当前循环,继续执行下一次循环。

package mainimport "fmt"func main() {for i := 0; i < 10; i++ {if i == 5 {break}if i%2 == 0 {continue}fmt.Println(i)}
}

在上面的例子中,当 i 等于 5 时,使用 break 终止循环;当 i 为偶数时,使用 continue 跳过当前循环,继续执行下一次循环。

循环的嵌套

循环可以嵌套在另一个循环中,以实现更复杂的逻辑控制。

package mainimport "fmt"func main() {for i := 1; i <= 3; i++ {for j := 1; j <= 3; j++ {fmt.Printf("i=%d, j=%d\n", i, j)}}
}

在上面的例子中,通过嵌套的 for 循环,打印出了所有可能的 ij 的组合。

最佳实践与总结

循环结构是实现重复执行和迭代控制的重要工具,Go语言提供了多种循环结构,包括forwhiledo-while等。在选择循环结构时,要根据实际需求和情况选择合适的循环类型,并注意循环条件、循环体和迭代控制等方面的逻辑。

在实际编程中,合理运用循环结构可以大大简化代码逻辑,提高代码的复用性和可维护性。无论是处理集合数据、重复任务、模拟场景还是实现其他逻辑,循环结构都是不可或缺的工具。通过学习不同的循环结构的用法和示例,您将更好地掌握如何使用循环来编写高效、功能完善的Go程序,为您的编程之旅增添色彩。

http://www.lryc.cn/news/143237.html

相关文章:

  • RabbitMQ笔记-RabbitMQ基本术语
  • Git向远程仓库与推送以及拉取远程仓库
  • PostgreSQL+SSL链路测试
  • 服务器(容器)开发指南——code-server
  • C++贪吃蛇(控制台版)
  • Java之字符串实践
  • BM20 数组中的逆序对
  • 高德猎鹰轨迹查询相关接口
  • 整理总结新手开始抖音小店经营:常见问题及解决办法
  • 4-1-netty
  • hive 动态分区-动态分区数量太多也会导致效率下降只设置非严格模式也能执行动态分区
  • java八股文面试[JVM]——JVM调优
  • FairyGUI-Unity 异形屏适配
  • Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案
  • Spring复习:(58)<context:annotation-config/>的作用
  • “东方杯”英特尔oneAPI黑客松大赛—参赛经验分享
  • win10家庭版远程桌面补丁_rdp wrapper
  • 【C++设计模式】开放-封闭原则
  • vue+file-saver+xlsx+htmlToPdf+jspdf实现本地导出PDF和Excel
  • axios 进阶
  • Redis限流实践:实现用户消息推送每天最多通知2次的功能
  • uniapp 存储base64资源为http链接图片
  • 列表类控件虚拟化
  • c# 多线程Task.Run 取消正在执行的多线程
  • sql server 如何设置主键
  • 【LeetCode-中等题】19. 删除链表的倒数第 N 个结点
  • Matlab图像处理-减法运算
  • stm32之11.USART串口通信
  • Python实现T检验
  • 校招算法题实在不会做,有没有关系?