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

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

for 循环

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

1. 基础形式

go 复制代码
package main

import "fmt"

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

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

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

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

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

go 复制代码
package main

import "fmt"

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

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

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

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

3. 无限循环形式

go 复制代码
package main

import "fmt"

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

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

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

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

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

go 复制代码
package main

import "fmt"

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

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

bash 复制代码
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安装软件很慢怎么解决

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

相关推荐
Soneswy15 小时前
C++基础篇——类与对象(中)
开发语言·c++
CoderYanger15 小时前
Java EE 进阶:5. Spring IoC&DI(第二弹):Spring IoC
java·开发语言·spring boot·spring·面试·职场和发展·java-ee
青峰讲运维16 小时前
OpenStack Heat 编排:用模板一键交付云业务,告别手动点页面
开发语言·php·openstack
MyFreeIT16 小时前
Python Windows Manual
开发语言·python
德迅云安全-上官16 小时前
德迅游戏盾:面向 TCP 业务的分布式云安全防护方案
分布式·tcp/ip·游戏
kiracrimson16 小时前
STL:List的使用和模拟实现
开发语言·c++·list
利威尔xu16 小时前
Go IM 源码实战(11):token 只是个 HASH,多端互踢的顺序错了就踢错人
后端·微服务·面试·架构·golang
microrain16 小时前
SagooIoT 把协议解析和消息通知都放进了独立进程
物联网·golang·插件·sagooiot
北冥you鱼17 小时前
Go 语言 GORM 使用 Preload:从关联查询到嵌套预加载的完整实践
开发语言·jvm·golang
科技那些事儿17 小时前
旗舰游戏本 CPU 对决:锐龙 9 9955HX 对比酷睿 Ultra 9 275HX
游戏·智能手机·智能电视