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

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

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

星河入梦发布于 2016/7/11更新于 2026/7/2435 浏览
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. 运行效果
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 十大经典排序算法 Python 实现及原理详解
  • C++ 计算给定 n 个有序顶点多边形的面积
  • Unity VR Pico 开发手册:一键配置开发环境与发布流程
  • 基于STM32的智能小车避障与循迹实战
  • WhisperLiveKit 会议纪要模板定制:适配不同场景样式
  • Linux 进程间通信之命名管道(FIFO)实战与面向对象封装
  • Vue Print Designer 前端可视化打印设计器详解
  • AI 赋能传统医疗设备改造:路径、挑战与展望
  • Xilinx FPGA LVDS 电源与电平配置关键指南
  • Windows 平台 ComfyUI 环境配置与启动问题排查指南
  • C++ 单链表概念与结构详解
  • HarmonyOS6 RcList 组件核心架构与类型系统设计
  • 企业级新能源充电系统管理架构设计与实现
  • Virt-A-Mate 虚拟实境互动软件简介
  • SpringAI 结合 Ollama 本地部署 Deepseek 模型实现对话机器人
  • 全国大学生智能车竞赛智慧医疗机器人惯导与路径规划思路
  • JD-GUI 实战指南:Java 字节码反编译工具使用详解
  • 基于 LiveKit 的 WebRTC 音视频通话集成指南(支持 iOS/Android)
  • MS-S1 MAX、AI MAX 395 在 Ubuntu 24 利用 Vulkan 版 llama.cpp 运行 gpt-oss 120b
  • YOLO 训练数据去重:使用 GPU 加速哈希比对

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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