Go语言第三章(五谷轮回)
北冥神功(太玄经)packagemainimportfmttypePersonstruct{NamestringAgeintSexstring}funcmain(){person:Person{Name:张三,Age:18,Sex:男,}ifperson.Age18{fmt.Println(成年)}else{fmt.Println(未成年)}}我们定义了一个Person结构体包含Name、Age、Sex三个字段。然后创建了一个实例判断其年龄是否满 18 岁满 18 岁输出「成年」否则输出「未成年」。这就是最基本的if/else二选一判断。多条件判断packagemainimportfmttypePersonstruct{Statusstring}funcmain(){person:Person{Status:在线,}ifperson.Status在线{fmt.Println(在线)}elseifperson.Status离线{fmt.Println(离线)}elseifperson.Status忙碌{fmt.Println(忙碌)}else{fmt.Println(未知状态)}}当需要处理三种及以上的分支时可以在if后面连续使用else if从上到下依次判断命中第一个为真的分支后就不再往下执行。最后的else用于兜底处理所有未匹配的情况。上面示例模拟了用户在线状态Status为「在线」「离线」「忙碌」时分别输出对应文字其他值则输出「未知状态」。同样的逻辑用switch写会更简洁——把要判断的值写在switch后面每个case对应一种取值packagemainimportfmttypePersonstruct{Statusstring}funcmain(){person:Person{Status:在线,}switchperson.Status{case在线:fmt.Println(在线)case离线:fmt.Println(离线)case忙碌:fmt.Println(忙碌)default:fmt.Println(未知状态)}}switch会拿person.Status与每个case逐一比较匹配到就执行对应分支。Go 的switch默认不会穿透到下一个case不需要写break。所有case都不匹配时执行default分支。写法适用场景if/else if条件各不相同不好抽成一个表达式switch 表达式同一个值匹配多种固定取值如状态、等级、星期逻辑嵌套packagemainimportfmttypePersonstruct{NamestringAgeintSexstring}funcmain(){person:Person{Name:张三,Age:18,Sex:男,}ifperson.Age18{ifperson.Sex男{fmt.Println(成年男性)}else{fmt.Println(成年女性)}}else{fmt.Println(未成年)ifperson.Sex男{fmt.Println(未成年男性)}else{fmt.Println(未成年女性)}}}多个if条件判断可以嵌套使用我们首先判断年龄是否等于18如果等于18则再判断性别是否等于男如果等于男则输出成年男性否则输出成年女性。如果不等于18则输出未成年再判断性别是否等于男如果等于男则输出未成年男性否则输出未成年女性。这就是一个基本的逻辑嵌套。当然也不是只能嵌套两层可以嵌套多层但是要注意逻辑的正确性。逻辑运算符判断条件经常需要组合多个表达式常用的逻辑运算符如下运算符含义示例为真条件并且a ba、b都为真||或者a || ba、b至少一个为真!取反!aa为假并且age:18sex:男ifage18sex男{fmt.Println(成年男性)}表示并且左右两边条件都为真整个表达式才为真。上面只有「年满 18 岁」且「性别为男」时才会打印「成年男性」。或者||age:33ifage18||age19{fmt.Println(18 岁或 19 岁)}else{fmt.Println(其他年龄)}||表示或者左右两边只要有一个为真整个表达式就为真。上面当年龄是 18或19 时走if分支否则走else。取反!isLogin:falseif!isLogin{fmt.Println(请先登录)}!把布尔值反过来!true为false!false为true。常用于「不满足某条件时」的分支判断。作业基础判断声明一个int类型的分数变量用if/else if/else判断等级90 分及以上为「优秀」6089 为「及格」60 分以下为「不及格」并打印结果。switch 练习定义一个string变量表示星期几如周一用switch匹配并打印对应提示未匹配时走default输出「无效的星期」。状态判断参照文中的Person结构体将Status分别设为「在线」「离线」「忙碌」和一个自定义值分别运行if/else if和switch两个版本观察输出是否一致。逻辑运算符声明age和hasTicket两个变量用判断「年满 18 岁且已购票」方可入场再改用||判断「会员或年龄大于 60 岁」可享受优惠分别打印结果。综合练习定义包含Name、Age、Score的结构体结合if嵌套判断年满 18 且分数不低于 60 才输出「合格」否则输出「不合格」并带上姓名。五谷轮回Go 里只有一种循环关键字for。没有while、也没有do-while所有循环形态都靠for表达。普通 for 循环我们声明了一个切片用经典的「初始化条件步进」写法遍历packagemainimportfmtfuncmain(){varhobbys[]string{吃饭,睡觉,打豆豆}fori:0;ilen(hobbys);i{fmt.Println(hobbys[i])}}for后面分成三段用分号隔开部分作用上面示例初始化循环开始前执行一次i : 0条件每次循环前判断为真才继续i len(hobbys)步进每次循环体结束后执行i输出依次为吃饭、睡觉、打豆豆。三段都可以省略。只留条件时就相当于其他语言里的whilepackagemainimportfmtfuncmain(){i:0fori3{fmt.Println(i)i}}条件也省略时就是无限循环需要靠break自己跳出packagemainimportfmtfuncmain(){i:0for{fmt.Println(i)iifi3{break}}}range 循环遍历切片、数组、字符串、map、channel 时更常用range写法更简洁packagemainimportfmtfuncmain(){varhobbys[]string{吃饭,睡觉,打豆豆}forindex,hobby:rangehobbys{fmt.Println(index,hobby)}}range每次迭代会返回两个值第一个是下标或 map 的 key第二个是对应的元素值输出为0 吃饭 1 睡觉 2 打豆豆如果只要值、不要下标用_丢掉第一个返回值for_,hobby:rangehobbys{fmt.Println(hobby)}如果只要下标、不要值写一个变量即可forindex:rangehobbys{fmt.Println(index)}遍历 mappackagemainimportfmtfuncmain(){person:map[string]string{name:张三,city:杭州,}forkey,value:rangeperson{fmt.Println(key,value)}}注意map 的遍历顺序不固定每次运行打印顺序可能不同。遍历字符串packagemainimportfmtfuncmain(){text:你好Goforindex,char:rangetext{fmt.Printf(下标 %d字符 %c\n,index,char)}}用range遍历字符串时拿到的是Unicode 码点rune不是单个字节。像「你」「好」这种汉字各占 3 个字节下标会按字节位置跳着走。写法适用场景for i : 0; i len(x); i需要精确控制下标、步长或从中间开始/倒序遍历for i, v : range x顺序遍历切片、数组、字符串、mapbreak 与 continue循环中经常要「提前结束」或「跳过本次」关键字含义break立刻跳出当前循环continue跳过本次剩余代码进入下一次循环break跳出循环packagemainimportfmtfuncmain(){hobbys:[]string{吃饭,睡觉,打豆豆}for_,hobby:rangehobbys{ifhobby睡觉{break}fmt.Println(hobby)}}遇到「睡觉」就break后面的元素不再遍历。输出只有吃饭。continue跳过本次packagemainimportfmtfuncmain(){hobbys:[]string{吃饭,睡觉,打豆豆}for_,hobby:rangehobbys{ifhobby睡觉{continue}fmt.Println(hobby)}}遇到「睡觉」就continue跳过打印但循环继续。输出为吃饭、打豆豆。带标签的 break多层循环嵌套时普通break只跳出最内层。若要一次跳出外层可以给循环加标签packagemainimportfmtfuncmain(){Outer:fori:0;i3;i{forj:0;j3;j{ifi1j1{breakOuter}fmt.Println(i,j)}}}break Outer会直接跳出名为Outer的那一层循环。continue也可以配合标签使用表示跳到指定循环的下一次迭代。gotogoto可以跳转到同一函数内的某个标签位置。能用但可读性往往更差日常代码里更推荐break/continue/return。packagemainimportfmtfuncmain(){i:0Loop:fmt.Println(i)iifi3{gotoLoop}}上面用goto模拟了一个简单循环打印0、1、2。实际项目中除非处理错误清理这类特殊场景否则尽量少用。作业普通 for声明一个1到10的循环打印所有偶数。range 练习定义切片[]string{春, 夏, 秋, 冬}分别用「只要下标」「只要值」「下标值」三种range写法打印。break / continue遍历1到20遇到能被3整除的数就continue跳过一旦遇到大于15的数就break结束。观察最终打印了哪些数。类 while用「只写条件」的for不要初始化段和步进段计算1 2 ... 100的和并打印。综合练习定义map[string]int表示各科分数如语文、数学、英语用range遍历低于 60 的科目打印「不及格」其余打印「及格」并统计及格科目数量。

相关新闻

无人机集群动态协同路径规划与防撞算法实践

无人机集群动态协同路径规划与防撞算法实践

1. 项目背景与核心挑战 在无人机集群应用场景中,动态环境下的协同路径规划是当前行业的技术制高点。去年参与某电力巡检项目时,我们6台无人机在变电站复杂环境中就遭遇了突发风场干扰,传统单机规划算法直接导致3台无人机轨迹冲突,…

2026/7/27 5:15:10阅读更多 →
大语言模型推理优化:从显存管理到计算效率提升

大语言模型推理优化:从显存管理到计算效率提升

1. 传统ML推理与LLM推理的本质差异第一次接触大语言模型推理时,我习惯性地用传统机器学习那套思维来部署,结果发现完全行不通。传统CV模型在T4显卡上跑得飞起,但同样的硬件跑个7B参数的LLM就直接OOM(内存溢出)。这让我…

2026/7/27 5:15:10阅读更多 →
大模型技术在办公场景的应用与学习路径

大模型技术在办公场景的应用与学习路径

1. 大模型技术演进与办公场景融合趋势过去一年里,AI大模型技术正以惊人的速度渗透到日常办公场景中。作为从业者,我观察到从代码生成到会议纪要,从数据分析到文档撰写,大模型正在重构传统工作流。最新发布的Agnes、书生浦语等模型…

2026/7/27 5:15:10阅读更多 →
03-张量

03-张量

张量是PyTorch中的核心数据抽象PyTorch中的张量就是元素为同一种数据类型的多维矩阵,与NumPy数组类似。PyTorch中,张量以"类"的形式封装起来,对张量的一些运算、处理的方法(数值计算、矩阵操作、自动求导)被…

2026/7/27 6:39:18阅读更多 →
基于深度学习的智能文档OCR系统设计与优化

基于深度学习的智能文档OCR系统设计与优化

1. 项目背景与核心价值这个毕业设计项目将传统文档处理与前沿深度学习技术相结合,打造了一个基于PyQt的智能化文件处理系统。我在实际开发中发现,许多企事业单位仍面临大量纸质文档电子化的需求,而现有OCR工具往往存在三个痛点:一…

2026/7/27 6:39:18阅读更多 →
n8n工作流蓝绿发布与灰度上线实战指南

n8n工作流蓝绿发布与灰度上线实战指南

1. n8n工作流发布策略的挑战与机遇在自动化工作流管理领域,n8n作为一款开源工具已经获得了大量企业的青睐。我最近在帮一家电商客户部署营销自动化系统时,遇到了一个典型问题:当他们需要更新一个处理每日10万订单的工作流时,直接全…

2026/7/27 6:39:18阅读更多 →
CLIP模型:多模态学习与零样本识别的革命性突破

CLIP模型:多模态学习与零样本识别的革命性突破

1. CLIP模型概述:多模态学习的革命性突破CLIP(Contrastive Language-Image Pre-training)是OpenAI在2021年提出的开创性多模态模型,它彻底改变了计算机视觉领域依赖固定类别标签的传统范式。这个模型的核心在于通过对比学习&#…

2026/7/27 6:39:18阅读更多 →
AI驱动的图表质量评估:VisJudge框架解析与实践

AI驱动的图表质量评估:VisJudge框架解析与实践

1. 图表质量评估的现状与挑战在数据驱动的时代,图表已经成为信息传递的核心载体。从学术论文中的实验数据展示,到企业决策中的商业智能仪表盘,再到日常生活中的新闻资讯可视化,图表无处不在。然而,一个令人担忧的事实是…

2026/7/27 6:39:18阅读更多 →
gfx936 DCU上实现INT8 QK MMAC:分页访存、Fragment映射与GQA适配

gfx936 DCU上实现INT8 QK MMAC:分页访存、Fragment映射与GQA适配

gfx936 DCU上实现INT8 QK MMAC:分页访存、Fragment映射与GQA适配 前言 本文是系列第二篇。第一篇《gfx936 DCU上实现INT8 KV与INT8 MMAC Attention推理优化》介绍了完整数据流,本文聚焦 Attention 的第一次矩阵乘法 QK^T。 把 K Cache 存成 INT8 并不…

2026/7/27 6:37:18阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/27 1:14:56阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:24阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →