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

【Golang】:流程控制语句

目录

1. 分支控制

1.1 if 语句

1.2 switch 语句

2. 循环控制

3. 跳转控制

3.1 break 语句

3.2 continue 语句

3.3 goto

3.4 return语句

3.5 带标签的 break / continue


1. 分支控制

1.1 if 语句

if 条件 { // 条件成立时执行 
} else if 其他条件 { // 另一个条件成立时执行 
} else { // 都不成立时执行 
}// 支持变量初始化:
if score := 80; score >= 60 { fmt.Println("及格") 
}

1.2 switch 语句

switch 表达式 { 
case 值1: // ... 
case 值2, 值3: // 多个匹配值 // ... 
default: // 都不匹配时执行 
}

特点:

  • Go 的 switch 不需要写 break,匹配成功会自动跳出。

  • 想继续执行下一个 case,可以用 fallthrough

    // 一// 二switch num := 1; num {case 1:fmt.Println("一")fallthroughcase 2:fmt.Println("二")}

2. 循环控制

Go 只有 for 一种循环语句。

// 1. 标准 for 循环
for i := 0; i < 5; i++ {fmt.Println(i) 
}// 2. while 风格
i := 0 
for i < 5 { fmt.Println(i) i++ 
}// 3. 无限循环
for { fmt.Println("一直执行") 
}

for range

用于遍历数组、切片、map、字符串:

// 在for range循环中遍历字符串时,每次迭代会返回两个值
// 第一个是字符的索引
// 第二个是字符的值,当遍历结束后会自动退出for循环。
nums := []int{1, 2, 3} 
for i, v := range nums { fmt.Println(i, v) 
}

3. 跳转控制

3.1 break 语句

退出当前循环或 switch

for i := 0; i < 5; i++ { if i == 3 { break } fmt.Println(i) 
}

3.2 continue 语句

跳过本次循环,进入下一次循环。

for i := 0; i < 5; i++ { if i%2 == 0 { continue } fmt.Println(i) 
}

3.3 goto

直接跳到某个标签执行(不建议频繁使用)。

    fmt.Println("开始") goto End fmt.Println("这里不会执行") 
End: fmt.Println("结束")

3.4 return语句

Go中的return语句在方法或函数中使用,表示跳出所在的方法或函数。如下:

// 在普通函数中使用return语句,表示跳出当前函数,可以理解成终止函数。
// 在main函数中使用return语句,表示终止main函数,即终止整个程序。
func main() {// return语句for i := 0; i < 10; i++ {if i == 6 {return}fmt.Printf("%d ", i)}
}

3.5 带标签的 break / continue

当有多层循环时,可以退出到指定标签。

    // 0 0Outer:for i := 0; i < 3; i++ {for j := 0; j < 3; j++ {if j == 1 {break Outer // 直接跳出 Outer 循环}fmt.Println(i, j)}}/*0 01 02 0*/Outer:for i := 0; i < 3; i++ {for j := 0; j < 3; j++ {if j == 1 {continue Outer // 直接跳出 Outer 循环}fmt.Println(i, j)}}

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

相关文章:

  • Java 正则表达式的使用方法
  • 开源长期记忆 短期记忆 框架调研对比19999字
  • 如何写好大模型的提示词prompt
  • 第40周——GAN入门
  • 【新手入门】Android基础知识(一):系统架构
  • 打靶日常-sql注入(手工+sqlmap)
  • 【Java EE进阶 --- SpringBoot】初识Spring(创建SpringBoot项目)
  • 本地生活|MallBook 分账赋能浙江本地生活服务平台,助力实现资金流转效率与合规性的双提升!
  • 一个集成多源威胁情报的聚合平台,提供实时威胁情报查询和播报服务、主动拦截威胁IP,集成AI等多项常用安全类工具
  • 超级云 APP 模式:重构移动互联网生态的新引擎
  • 高频量化详解,速度和程序化的满足!
  • QT|windwos桌面端应用程序开发,当连接多个显示器的时候,如何获取屏幕编号?
  • Storage.AI解读:构建AI数据基础设施的开放标准
  • 【nginx】如何在本地代理外部链接
  • 《探秘浏览器Web Bluetooth API设备发现流程》
  • Web 安全之 Cookie Bomb 攻击详解
  • 前端动画库之gsap
  • 【Python】一些PEP提案(六):元类、默认 UTF-8、Web 开发
  • 【LeetCode 热题 100】55. 跳跃游戏
  • 开源数据发现平台:Amundsen Frontend Service 应用程序配置
  • Cursor 分析 bug 记录
  • 基于RobustVideoMatting(RVM)进行视频人像分割(torch、onnx版本)
  • 【机器学习深度学习】客观评估主观评估:落地场景权重比例
  • 四、图与网络模型
  • 大模型性能测试完全指南:从流式响应到多模态的深度实践
  • [激光原理与应用-286]:理论 - 波动光学 - 不同频段电磁波的特点与差异性
  • Docker Compose部署Clickhouse最新版
  • 区块链技术原理(13)-以太坊燃料费Gas
  • 力扣top100(day04-03)--二分查找
  • whisper 语种检测学习笔记