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

深入浅出 Go 流程控制:从循环到延迟执行

Go 语言的流程控制简洁而强大。不同于其他语言提供多种循环和复杂的条件判断,Go 遵循“少即是多”的原则,仅通过forifswitch和独特的defer就完成了所有逻辑构建。


1. 循环之王:for

在 Go 中,for是唯一的循环语句。它有几种不同的变体,涵盖了其他语言中forwhile的所有功能。

基础语法

标准的for循环由三部分组成,且不需要括号

Go

for i := 0; i < 10; i++ { sum += i }
  • 初始化语句:执行前运行(通常是短变量声明)。

  • 条件表达式:每次迭代前求值。

  • 后置语句:每次迭代后运行。

变体:Go 的 "while"

你可以省略初始化和后置语句,这时它就变成了其他语言中的while

Go

sum := 1 for sum < 1000 { sum += sum }

无限循环

如果省略循环条件,它就是死循环:

Go

for { // 除非 break 或 return,否则永远运行 }

2. 条件判断:ifelse

Go 的if语句与for类似:表达式不需要括号,但大括号{}是必须的

带有简短语句的if

这是一个非常实用的特性:你可以在条件表达式前执行一段简短的语句。该语句声明的变量作用域仅限于if及对应的else块内

Go

if v := math.Pow(x, n); v < lim { return v } else { fmt.Printf("%g >= %g\n", v, lim) } // 这里无法使用变量 v

3. 分支选择:switch

Go 的switch比 C 或 Java 更灵活,也更安全。

  • 自动 break:除非以fallthrough语句结尾,否则代码执行完选中的case后会自动终止,不需要显式写break

  • 任意值case的值不局限于整数或常量。

  • 无条件 switch:如果省略 switch 后的表达式,它等同于switch true,可以作为更整洁的if-then-else链使用。

Go

switch os := runtime.GOOS; os { case "darwin": fmt.Println("OS X.") case "linux": fmt.Println("Linux.") default: fmt.Printf("%s.\n", os) }

4. 延迟执行:defer

defer是 Go 的一大特色。它会将函数的执行推迟到外层函数返回(return)之后立即执行。

基本用法

常用于关闭文件句柄、解锁资源等清理工作:

Go

func main() { defer fmt.Println("world") fmt.Println("hello") } // 输出顺序:hello -> world

延迟栈(Stacking defers)

如果你在一个函数内多次调用defer,它们会按照**后进先出(LIFO)**的顺序执行。

Go

for i := 0; i < 3; i++ { defer fmt.Print(i) } // 输出结果为:2 1 0

📝 总结表

关键字核心要点视觉提醒
forGo 唯一的循环,涵盖 for/while/forever🔁
if支持在判断前声明变量,大括号必选
switch默认自动 break,case 可以是任何表达式🎋
defer延迟执行,常用于资源释放,遵循 LIFO 栈顺序
http://www.cnnetsun.cn/news/192691.html

相关文章:

  • LangFlow Plausible轻量级隐私友好分析
  • LangFlow DebugBear网页性能测试
  • LangFlow Airbrake快速定位代码缺陷
  • 掌握大数据领域 Hive 的动态分区技术
  • 差模电感的作用与滤波性能深度剖析
  • LangFlow vRealize Operations VMware环境优化
  • 户外泳池漆用什么材料好?资深分析师拆解水池蓝耐水抗氯耐候性能
  • 学生上机常见问题:Multisim主数据库无法打开的系统学习
  • Unity3D中实现实时数字孪生的操作指南
  • Wine 中 GDI 绘制的实现原理分析与架构解读
  • 吉因加冲刺港股:上半年营收2.9亿亏4亿 华大基因与爱尔医疗是股东
  • LangFlow Sentry错误日志追踪
  • 前后端分离校园失物招领系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • LangFlow Rigor性能数据基准测试
  • LangFlow iperf3网络带宽性能测试
  • 企业级太原学院商铺管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • Java Web 网上宠物店系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • LangFlow GTmetrix网页性能分析
  • django京东食品销售数据分析系统_4032ydxt 爬虫可视化
  • LangFlow Wireshark Mobile安卓抓包
  • LangFlow Traceroute路由跟踪诊断
  • LangFlow bmon带宽监视器和速率估算
  • LangFlow Hydra暴力破解防护验证
  • 基于Kibana的Elasticsearch索引管理全面讲解
  • LangFlow Packet Capture iOS无越狱抓包
  • LangFlow ECloud EMetrics性能监控
  • STM32CubeMX串口通信接收功能快速上手指南
  • 零基础掌握Elasticsearch可视化工具的数据浏览技巧
  • LangFlow Burp Suite渗透测试代理
  • 2、Windows Server 2012 R2 Hyper-V新特性深度解析(上)