当前位置: 首页 > 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.dtcms.com/a/332135.html

相关文章:

  • Python基础(Flask①)
  • 科技展厅通过多媒体技术能如何创新展示,超越展墙展板的固有限制?
  • 基于HTML5与Tailwind CSS的现代运势抽签系统技术解析
  • Rust+Python双核爬虫:高并发采集与智能解析实战
  • 基于单片机的超市储物柜设计
  • 超高车辆碰撞预警系统如何帮助提升城市立交隧道安全?
  • CERT/CC警告:新型HTTP/2漏洞“MadeYouReset“恐致全球服务器遭DDoS攻击瘫痪
  • UE UDP通信
  • 接口芯片断电高阻态特性研究与应用分析
  • UDP协议特点与网络通信
  • MIPI-csi调试
  • 物联网系统中传感器到网关到物联网平台的传输路径、协议、原理、用途与架构详解
  • 【机器学习深度学习】OpenCompass 评测指标全解析:让大模型评估更科学
  • tun/tap 转发性能优化
  • 当云手机出现卡顿怎么办?
  • 自适应UI设计解读 | Fathom 企业人工智能平台
  • 基于微信小程序的家教服务平台的设计与实现/基于asp.net/c#的家教服务平台/基于asp.net/c#的家教管理系统
  • Boost库中boost::function函数使用详解
  • OpenCV-循环读取视频帧,对每一帧进行处理
  • GoLand深度解析:智能开发利器与cpolar内网穿透方案的协同实践
  • 0814 TCP通信协议
  • 一款开源的远程桌面软件,旨在为用户提供流畅的游戏体验,支持 2K 分辨率、60 FPS,延迟仅为 40ms。
  • 数据库访问模式详解
  • [TryHackMe](知识学习)---基于堆栈得到缓冲区溢出
  • opencv基础学习与实战(2)
  • Linux中的日志管理
  • 学习嵌入式第二十八天
  • 中山清华:基于大模型的具身智能系统综述
  • app-4 日志上传
  • 从0到1:C++ 语法之引用