跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Go / Golang算法

Go 语言核心控制流:for 循环与 switch 详解

Go 语言基础语法解析,涵盖 for 循环的 range 用法及 switch 语句的条件省略特性。通过字节数组比较实例演示了循环与条件判断的结合,展示了字符串遍历时 rune 类型的处理细节。内容聚焦于代码逻辑与控制流实践,帮助开发者快速掌握 Go 的核心迭代与分支机制。

星河入梦发布于 2016/7/11更新于 2026/10/2288 浏览
Go 语言核心控制流:for 循环与 switch 详解

Go 语言控制流基础:for 与 switch

在 Go 语言中,for 是唯一提供的循环结构,而 switch 则提供了灵活的分支判断能力。这两者结合使用时,往往能写出非常简洁的代码。下面我们通过实际案例来拆解它们的用法。

for 循环与 range

Go 的 for 循环功能强大,配合 range 关键字可以方便地遍历切片或字符串。

list := []string{"h","e","l","l","o"}
for k,v := range list{
	fmt.Printf("%d %c\n",k,v)
}

这里 k 代表索引,v 代表元素值。值得注意的是,当遍历字符串时,range 返回的是 UTF-8 编码的 rune(即 Unicode 码点),而不是单个字节。这意味着在处理中文等多字节字符时,它能正确处理字符边界。

switch 语句的灵活性

Go 的 switch 不需要显式的 break,且支持无条件的表达式判断,这让它非常适合用来替代复杂的 if-else 链。

看下面的字节数组比较函数,它利用 switch{} 实现了类似字典序的比较逻辑:

func Compare(a,b []byte) int{
	for i := 0;i < len(a) && i < len(b);i++{
		switch{
		case a[i] > b[i]:
			return 1;
		case a[i] < b[i]:
			return -1;
		}
	}
	switch{
	case len(a) < len(b):
		return -1;
	case len(a) > len(b):
		 ;
	}
	 
}
return
1
return
0

这种写法比嵌套 if 更清晰。第一个 switch 逐字节对比,一旦发现不同立即返回结果;第二个 switch 处理长度差异。如果两个数组完全相同,最终返回 0。

运行效果

在 main 函数中调用上述逻辑,可以直观看到比较结果:

s1 := []byte{'a','c'}
s2 := []byte{'a','d'}
fmt.Println(Compare(s1,s2))

这段代码展示了 Go 语言在控制流设计上的简洁性。掌握这些基础结构,有助于编写出更易读、维护成本更低的生产级代码。

目录

  1. Go 语言控制流基础:for 与 switch
  2. for 循环与 range
  3. switch 语句的灵活性
  4. 运行效果

更多推荐文章

查看全部
  • 初阶数据结构:顺序表
  • 精选数字资源合集:电子书、软件、游戏与学习教程
  • Transformer 模型架构与原理图解
  • 并查集数据结构详解:原理、优化与实战应用
  • PID 控制算法:手动与自动模式切换机制
  • C++ 运算符重载入门:分数类实现示例
  • LeetCode 88:合并两个有序数组(C 语言双指针详解)
  • Java RSA 私钥 PKCS1 与 PKCS8 格式互转及对象构建
  • 算力产业深度解析:应用分化与推理能力新商业模式
  • Linux 动静态库的打包与使用详解
  • C++ 基础知识详解
  • C++ 标准库 string 类详解:接口、原理与模拟实现
  • 基于 FastAPI 自动构建 SSE MCP 服务器
  • 使用 Python 和 AI 搭建智能害虫识别助手
  • Python 量化实战:使用 AKShare 抓取 A 股实时行情数据
  • Llama Factory 微调显存不足?云端 GPU 实战指南
  • AI 大模型如何重塑生活体验:端侧智能的落地与挑战
  • 在 Cursor 中配置并使用 MCP 服务实战指南
  • 数据结构:栈与队列的实现及应用
  • WebDAV 服务器快速部署指南:搭建个人文件共享平台

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online