《快学 Go 语言》第 3 课 —— 分支与循环

单智能体甜点区:工程化落地的四大支柱与避坑指南 单智能体并非过时架构,而是大模型应用中兼顾性能、可观测性与运维效率的关键范式。其核心原理在于通过状态闭环、上下文分层与双通道响应,在LLM不确定性与工程确定性之间建立平衡;技术价值体现在显著降低P95延迟(实测下降83%)、错误率(降幅超95%)及MTTD(平均诊断时间压缩至3分钟内);典型应用场景包括智能客服、知识助手、SaaS后台等无需跨系统协同的高稳定性需求系统。本文聚焦single-agent sweet spot这一行业高频搜索概念,结合LAI(Large Agent Infrastructure 阅读详情

程序 = 数据结构 + 算法

上面这个等式每一个初学编程的同学都从老师那里听说过。它并不是什么严格的数据公式,它只是对一般程序的简单认知。数据结构是内存数据关系的静态表示,算法是数据结构从一个状态变化到另一个状态需要执行的机器指令序列。数据结构是静态的,算法是动态的。数据结构是状态,算法是状态的变化。

640?wx_fmt=png
图片

上一节我们讲的变量,它是数据结构的最小单位,本节我们要讲的分支与循环,它是算法逻辑的最小单位。

Go 语言的分支循环语句选择性较少,循环语句它只有 for 循环,平时我们在其它语言用的 while 语句、do while 语句、loop 语句它是没有的。分支语句只有 if 和 switch,也没有三元操作符。

少并不是坏事,够用就行。语法糖丰富了表面上选择性多了功能强大了,但是也会增加代码的理解成本,用户需要掌握更多的知识才可以理解代码,这会提高语言的学习门槛。一个经验丰富的编程老鸟总是会倾向于用最简单的代码来写出易于理解的程序来,偏方窍门奇技淫巧那是初学者膜拜的对象。

快学 Go 语言 第 1 课 —— Hello World

快学 Go 语言 第 2 课 —— 变量基础

if else 语句

下面我们使用 if else 语句编写一个最大函数 max 、最小函数 min 和 正负符号函数 sign。这个例子中我们要第一次引入用户自定义的函数。

package main

import "fmt"

func main() {
    fmt.Println(sign(max(min(24, 42), max(24, 42))))
}

func max(a int, b int) int {
    if a > b {
        return a
    }
    return b
}

func min(a int, b int) int {
    if a < b {
        return a
    }
    return b
}

func sign(a int) int {
    if a > 0 {
        return 1
    } else if a < 0 {
        return -1
    } else {
        return 0
    }
}

------------
1

switch 语句

哪种语言没有 switch 语句?我所知道的只有 Python 语言,在 Python 里面你需要编写很多的 if else 分支语句来达到 switch 的效果。Go 语言提供了 switch 语句,下面我们使用 switch 语句来编写一个简单的评分函数。switch 有两种匹配模式,一种是变量值匹配,一种是表达式匹配。

package main

import "fmt"

func main() {
    fmt.Println(prize1(60))
    fmt.Println(prize2(60))
}

// 值匹配
func prize1(score int) string {
    switch score / 10 {
    case 0, 1, 2, 3, 4, 5:
        return "差"
    case 6, 7:
        return "及格"
    case 8:
        return "良"
    default:
        return "优"
    }
}

// 表达式匹配
func prize2(score int) string {
    // 注意 switch 后面什么也没有
    switch {
        case score < 60:
            return "差"
        case score < 80:
            return "及格"
        case score < 90:
            return "良"
        default:
            return "优"
    }
}

for 循环

Go 语言虽然没有提供 while 和 do while 语句,不过这两个语句都可以使用 for 循环的形式来模拟。我们平时使用 while 语句来写死循环 while(true) {},Go 语言可以这么写

package main

import "fmt"

func main() {
    for {
        fmt.Println("hello world!")
    }
}

package main

import "fmt"

func main() {
    for true {
        fmt.Println("hello world!")
    }
}

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        fmt.Println("hello world!")
    }
}


for 语句配合 range 关键字还能玩出更多新花样,这个我们会在后面章节陆续讲解

循环控制

Go 语言支持 continue 和 break 语句来控制循环,这两个语句和其它语言没什么特殊的区别。除此之外 Go 语言还支持 goto 语句。计算机科学家迪杰斯特拉很讨厌 goto 语句,他的那片广为流传的论文《Goto 有害》已经家喻户晓般地为人所知,可是他已经去世这么多年了,很遗憾还是没能阻挡 goto 语句死灰复燃般地继续存在。

640?wx_fmt=jpeg
图片

我们作为普通用户平时还是尽量不要使用 goto 语句了,不论是谁来 review 你的代码只要是看到了 goto 语句肯定会发发牢骚的。

下一节我们开讲 Go 语言重要的特殊数据类型 —— 数组与切片

640?wx_fmt=jpeg

阅读更多有趣文章,欢迎关注公众号「码洞」

13、掌握Go语言控制流:循环、分支与错误处理 本文深入探讨了Go语言的控制流语句,包括for循环、break、continue、switch和defer。通过实际应用场景和代码示例,我们了解了这些语句的工作原理和用法,以及如何利用它们提高代码的可读性和效率。这些控制流语句是编程的基础,对于想要学习和使用Go语言的开发者来说,掌握它们是至关重要的。 阅读详情

相关推荐

【Go】Go语言中的流程控制语句

在编程中,流程控制是决定程序如何执行的关键部分。Go语言作为一种静态类型、编译型语言,其流程控制机制与其他高级语言类似,但也有一些独特之处。本文将详细探讨Go语言中的流程控制语句,包括顺序控制、条件控制(if、if-else、if-else if-else)、循环控制(for循环、for-range循环)、分支控制(switch语句)、以及跳转控制(goto、break、continue)。本文通过实际案例,我们将深入理解这些控制语句的使用方法和应用场景。

景天科技苑 4万+

DEMOGEN:文本驱动运动生成的分解-组合新范式

文本到运动生成是计算机视觉与图形学交叉领域的前沿技术,其核心在于将自然语言描述转化为物理合理的三维人体动作。传统方法难以处理复合动作描述,而新兴的分解-组合范式通过大型语言模型将复杂指令拆解为基本运动单元,显著提升了生成质量。DEMOGEN采用双通道处理架构,结合运动VAE与扩散模型,在HumanML3D数据集上实现了2.708的FID分数。该技术通过正交化损失和语义一致性损失的创新组合,使R-Precision指标提升至0.586,特别适用于虚拟角色动画、体育训练分析等需要高精度动作生成的场景。

weixin_33719619的博客 538

深入解析DDR5 RFM机制:从JESD79-5标准到硬件实现

本文深入解析了DDR5内存标准中的关键机制——RFM(Refresh Management)。文章从JESD79-5标准出发,详细阐述了RFM如何通过RAA计数器实现从被动定时到主动响应的智能刷新管理,并探讨了其硬件实现细节、命令调度挑战及系统级设计考量,为芯片设计工程师优化DDR5内存子系统性能与可靠性提供了实践指导。

fff88的博客 492

《快学 Go 语言》第 7 课 —— 冰糖葫芦串

字符串通常有两种设计,一种是「字符」串,一种是「字节」串。「字符」串中的每个字都是定长的,而「字节」串中每个字是不定长的。Go 语言里的字符串是「字节」串,英文字符占用 1 个字节,非英文字符占多个字节。这意味着无法通过位置来快速定位出一个完整的字符来,而必须通过遍历的方式来逐个获取单个字符。 我们所说的字符通常是指 unicode 字符,你可以认为所有的英文和汉字在 unicode 字符集中都...

weixin_40581617的博客 375

深度解析快递柜管理系统的C++实现:设计与实现

本文详细介绍了一个基于C++的快递柜管理系统的设计与实现,包括系统需求分析、架构设计、数据库设计、关键功能模块实现和测试与验证。通过详细的代码示例和理论分析,读者可以全面了解如何开发一个完整的快递柜管理系统。希望本文能够为读者在实际项目开发中提供有价值的参考。

m0_57781768的博客 714

Office 365部分安装及同时安装Visio的方法

From MWeb Win版本的Office 365安装包默认安装所有组件,没有选择的页面,在安装Office 365后再安装下载的Visio 2016专业版时,会显示计算机上已经安装了即插即用Office,Visio不可安装,因此可以考虑使用Office部署工具来解决这两个问题。 下载安装Office365和Visio 下载Office部署工具 修改配置 部署工具使用方法...

weixin_30737363的博客 2万+

快学 Go 语言 第 3 课 —— 分支与循环

程序 = 数据结构 + 算法上面这个等式每一个初学编程的同学都从老师那里听说过。它并不是什么严格的数据公式,它只是对一般程序的简单认知。数据结构是内存数据关系的静态表示,...

codehole_的博客 181

【Cadence】stb仿真和ac仿真——以一个简单的全差分反相放大器仿真为例

最近在补一些仿真方法学的问题,以及一些一直以来都有点模糊的概念,简单记录一下。搭建一个以两个CMOS反相器构成的全差分放大器(28nm工艺,PMOS和NMOS尺寸一致)激励的设置方便共模和差模仿真用同一个TB(这里有一个问题:这个放大器需要在开环下仿真还是闭环下?哪些放大器应用在开环,哪些闭环?这种应用场景不同会导致需要仿真得到开环还是闭环增益,或者环路增益?(我知道放大器在设计的时候肯定都是闭环应用的多,但是什么时候没必要闭环应用?光验证ac和stb仿真是否一样的话有必要有回路吗?

weixin_44951108的博客 5万+

《快学 Go 语言》第 6 课 —— 字典

字典在数学上的词汇是映射,将一个集合中的所有元素关联到另一个集合中的部分或全部元素,并且只能是一一映射或者多对一映射。 数组切片让我们具备了可以操作一块连续内存的能力,它是对同质元素的统一管理。而字典则赋予了不连续不同类的内存变量的关联性,它表达的是一种因果关系,字典的 key 是因,字典的 value 是果。如果说数组和切片赋予了我们步行的能力,那么字典则让我们具备了跳跃的能力。 指针、数组切...

weixin_34310127的博客 205

保姆级教程 | MS构建三层石墨后转成LAMMPS的data文件

喜欢的话记得一键三连~

baguette的博客 2953

【腾讯小龙虾 WorkBuddy 专栏 03】技能(Skills)制作全教程!自定义技能编写、导出分享、导入使用一步到位

🔥腾讯AI智能体WorkBuddy自定义技能全攻略 本文为零基础用户提供WorkBuddy自定义技能的完整教程,涵盖技能概念、编写规范到实操全流程。核心内容包括: 技能本质:标准化任务指令模板,可固化重复操作流程 三大价值:一键执行重复任务/跨设备共享/降低使用门槛 实操演示:以"桌面文档自动分类"为例,分步讲解编写、测试、导出 共享方案:支持单技能/批量导出,通过任意渠道传输分享 导入指南:3秒完成他人技能加载,并提供常见问题解决方案 高阶优化:增加异常处理、版本管理等提升技能普适性

AI人人懂 2987

【Go语言快速上手(二)】 分支与循环&函数讲解

本篇文章站在能快速上手GO语言的前提下,讲解了GO语言的分支与循环语句,以及函数的详解,内附代码和图文讲解,看完就能学会!

杭电码农-NEO的博客 2552

045、镜头模组公差链分析:从 Lens 到 Sensor 的装配公差累积与良率优化

本文深入分析了镜头模组从镜片到传感器各环节的公差累积问题及优化策略。文章首先剖析了四级公差链(镜片单体、镜筒装配、VCM定位、传感器贴装)的误差传递机制,指出各环节典型公差值及其影响(如5微米镜片偏差可导致0.02度光线偏折)。其次对比了最坏情况法与均方根法的差异,强调需考虑公差相关性(如镜片曲率与镜筒间隙的正相关性)。最后提出良率优化"三板斧":通过蒙特卡洛仿真优化公差分配、采用主动对准工艺在线补偿、建立数据反馈闭环系统,并结合"阴阳脸"案例说明如何定位根因(模具磨损+贴片机老化导致的误差叠加)。作者总结

sundong_81的博客 59

分支与循环语句 之C语言

C语言语句可以分为以下的五种1 表达式语句2 函数调用语句3 控制语句4 复合语句5 空语句本章重点讲解 3控制语句,那么控制语句是什么呢?其实控制语句就是指,用于控制程序的执行过程,以实现程序的各种结构方式。(有顺序结构、选择结构、循环结构),它们由特定的语句定义符组成。其实C语言控制语句又可以分为9种3类1 条件判断语句也叫分支语句 如: if语句 switch 语句2 循环语句 如: for循环语句 while语句 do while语句。

z541838的博客 1493

yolov8涨点系列之替换幽灵卷积GhostConv

yolov8涨点系列之替换幽灵卷积GhostConv

zhang1379的博客 3567

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C语言详解——分支与循环语句与go to语句

C语言详解——分支与循环语句与go to语句

VHhhbb的博客 1267

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Golang分支和循环

注意:Go语言中,花括号一定要跟着if、for、func等行的最后,否则语法出错。C语言的switch有穿透效果,如果想在Go语言中实现穿透效果,使用fallthrough穿透当前case语句块。我们使用的是伪随机数,是内部写好的公式计算出来的。但是,大家使用C语言的时候,一般都不想要使用这种穿透效果,所以,如非必要,不要使用fallthrough。中止当前这一趟循环体的执行,直接执行“循环后操作”后,进入下一趟循环的条件判断。除了break,函数的return结束函数执行,当然也能把函数中的循环打断。

weixin_49129782的博客 389

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Go语言入门基础

Go语言入门基础 本文是学校选修课程笔记 author: fengclchn@outlook.com 1.源文件 package main import ( "fmt" ) func main() { fmt.Println("Hello World!") } package声明所属包名称 注意 一般所属包名称与所在目录名相同,main函数包名一定是main package main //声明所属包名称,一般所属包名称与所在目录名相同,main函数包名一定是main import

SPECIAL8654237的博客 2402

go语言学习(3)--分支和循环

文章目录ifswitchfor if 先看一个最常见的 if else分支 func readFile() { const filename = "./lesson2(branch)/abc.txt" contents, err := ioutil.ReadFile(filename) if err != nil { fmt.Println(err) } else { fmt.Pr...

weixin_42259580的博客 314

大家一起学Golang——Go语言关键字与基本语法

大家一起学Golang——Go语言关键字与基本语法 Golang25个关键字 关键字 作用 一级分类 二级分类 三级分类 var 变量声明 基本结构 变量与常量 … const 常量声明 基本结构 变量与常量 - package 包声明 基本结构 包管理 - import 包引用 基本结构 包管理 - func 函数声明 基本组件 函数 - return 函数返...

c0586的专栏 777

【C语言】分支与循环语句

超详细讲解

ylfxw的博客 1155

golang之命令行交互、if判断、for循环、switch分支、goto、标签

一、命令行交互 命令行交互一般使用 fmt.Scanln()用于接收输入,然后通过指针用输入的值修改定义好的变量的值 package main import ( "fmt" "reflect" ) func main() { var name string var age int fmt.Print("请输入你的名字和年龄:") // _是占位符,如果该位接收的话,输出...

贵有恒,何必三更眠五更起;最无益,只怕一日曝十日寒 2723

详讲C语言的分支与循环

C语言是一门结构化程序语言,这里的结构是指 顺序结构、选择结构、循环结构 ,C语言是能够实现这三种结构的,其实我们如果仔细分析,我们日常所常见的都可以分析为这三种结构或这三种结构的组合。可以用if、switch实现 分支结构 ,使用for、while、do...while实现 循环结构 ,在循环中会遇到break和continue语句,调整 它的执行逻辑。目录。

2403_86639917的博客 1976
上一篇: 《快学 Go 语言》第 1 课 —— Hello World
下一篇: 《快学 Go 语言》第 2 课 —— 变量什么的最讨厌了
codehole_
博客等级 码龄7年 34粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值