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

180课时吃透Go语言游戏后端开发6:Go语言的循环语句

在这里插入图片描述

第6课我们正式学习Go语言的循环语句。循环语句能让一段代码按照设定的条件重复执行,大大提高编程效率。

for 循环

Go语言中只有 for 这一种循环结构,但它有几种不同的使用形式。

1. 基础形式

package mainimport "fmt"func main() {for i := 0; i < 5; i++ {fmt.Println("当前循环次数:", i)}
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code006$ go run main.go
当前循环次数: 0
当前循环次数: 1
当前循环次数: 2
当前循环次数: 3
当前循环次数: 4

在这个例子里,for 后面跟着三个部分,i := 0 是初始化变量 i 并赋值为 0i < 5 是循环条件,只要 i 小于 5 就继续循环;i++ 是每次循环结束后 i 自增 1 。大括号里的代码 fmt.Println("当前循环次数:", i) 会被重复执行,直到 i 不再小于 5

2. 省略初始化和后置语句形式

package mainimport "fmt"func main() {i := 0for ; i < 5;  {fmt.Println("当前循环次数:", i)i++}
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code006$ go run main.go
当前循环次数: 0
当前循环次数: 1
当前循环次数: 2
当前循环次数: 3
当前循环次数: 4

这里把初始化和自增操作放到了 for 循环外面,for 里只保留了循环条件,效果和上面的基础形式一样。

3. 无限循环形式

package mainimport "fmt"func main() {for {fmt.Println("这是一个无限循环")}
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code006$ go run main.go
这是一个无限循环
这是一个无限循环
这是一个无限循环
这是一个无限循环
这是一个无限循环
这是一个无限循环
这是一个无限循环
...

我们可以发现,命令行界面或者成为终端界面会一个不停的显示“这是一个无限循环”,因为上述for循环是一个没有结束条件的循环,通常称为死循环。那如何停止程序呢,很简单,只需要按住Ctrl + C即可退出,或者直接关闭命令行窗口也行。

这种形式没有循环条件和其他控制语句,会一直循环下去,通常我们会在循环体里加入条件语句(不懂的请查看上一课内容)和 break 语句来跳出循环,break意味打断,打断循环即跳出循环的意思。比如在游戏里,我们可能会有一个持续监听玩家操作的循环,直到玩家做出特定操作(比如点击退出按钮)才结束循环。

package mainimport "fmt"func main() {for {fmt.Println("请输入一个数字(输入0退出):")var num intfmt.Scanln(&num)if num == 0 {break}fmt.Printf("你输入的数字是:%d\n", num)}
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code006$ go run main.go
请输入一个数字(输入0退出):
888
你输入的数字是:888
请输入一个数字(输入0退出):
666
你输入的数字是:666
请输入一个数字(输入0退出):
0

这个例子里,程序会一直提示用户输入数字,fmt.Scanln(&num)这行代码会让程序进入阻塞状态(相当于程序睡眠了不会被执行),直到用户输入一个数字后回车才会从这行代码后面继续执行,此时num变量已经保存着用户输入的数字,只有当用户输入 0 时,通过 break 语句跳出循环,结合程序运行的结果我们可以发现只有当用户输入0时,循环被终止。

在游戏开发中,for 循环可以用来遍历地图上的所有格子,处理每个格子上的游戏元素;或者循环播放背景音乐等等。现在你可以试着修改这些示例代码,比如改变循环条件、增加更多的判断逻辑,多实践才能更好地掌握循环语句。要是遇到什么问题,欢迎评论区留言。

推荐阅读

  1. 【Go零基础系列】003:Go语言中的变量详解
  2. 十分钟带你入门Node.js 开发
  3. Ubuntu24.04怎么更换软件源/Ubuntu安装软件很慢怎么解决

每一次点赞,都是你无声的鼓励。每一次关注,都是我前行的动力。感谢有你,一起成长!

http://www.dtcms.com/a/437932.html

相关文章:

  • wordpress+vps建站关键词语有哪些
  • 网站建设基本标准野花高清中文免费观看视频
  • hadoop-hdfs
  • VB6.0找不到该引用word,excel“Microsoft Excel 16.0 Object Library”解决方法
  • 读者-写者问题实现真正的写优先
  • 北京人力资源网站县区网站集约化建设
  • 从零开始,用WPS和DeepSeek打造数字人科普视频
  • netgear r6220 路由器,刷openwrt后,系统备份还原
  • 特价流量网站什么情况自己建设网站
  • 昂瑞微IPO前瞻:技术破局高端射频模组,国产替代第二波浪潮下的硬科技突围
  • 开源 全平台 哔哩哔哩缓存视频合并 Github地址:https://github.com/molihuan/hlbmerge_flutter
  • EPOLLONESHOT事件类型:多线程I/O中的“一次触发“机制
  • Github卡顿问题解决方案
  • 智慧园区数字孪生建设方案(WORD)
  • GitHub 热榜项目 - 日榜(2025-10-03)
  • 【QT常用技术讲解】自定义支持多选项的下拉框
  • 网址注册了怎么做网站小说网站自主建设
  • 基于PyTorch实现的MNIST手写数字识别神经网络笔记
  • 基于STM32单片机智能手表手环GSM短信上报GPS定位校时
  • 平台开发多少钱seo专员是什么意思
  • DAY23 单例设计模式、多例设计模式、枚举、工厂设计模式、动态代理
  • 在云服务器搭建部署私人饥荒联机版游戏服务器 [2025.10.3][ubuntu 24.04][腾讯云2核2G服务器]
  • 使用Go做一个分布式短链系统
  • 北京专业做网站设计公司全国高校教师网络培训中心
  • 元萝卜 1.0.9 | 免root支持XP模块,一键微信平板模式,游戏增强,应用多开
  • Unity Time参数:Maximum Particle Timestep
  • 网站运营包括哪些内容爱用建站怎么样
  • Java JVM --- JVM内存区域划分,类加载,GC垃圾回收
  • 做网站卖广告位赚钱吗最火的自媒体平台排名
  • 从“快递签收规则”看 sigaction:信号处理的“总开关”