快学 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万+

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

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

weixin_40581617的博客 375

别再到处找模型了!手把手教你将TI、ADI官网的SPICE模型导入LTspice(附路径避坑指南)

本文详细介绍了如何将TI、ADI官网的SPICE模型导入LTspice的全流程,包括模型获取、路径配置、符号生成等关键步骤,并提供了路径避坑指南。通过实战案例和技巧分享,帮助电子工程师高效利用外部元器件模型进行电路仿真,提升设计效率。

weixin_42535703的博客 408

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

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

weixin_33719619的博客 538

手把手教你用STM32实现SPWM逆变器控制(附完整代码)

本文提供了一份基于STM32实现SPWM逆变器控制的完整实战指南。文章从硬件选型(如STM32F103C8T6、IR2104驱动器)入手,详细解析了利用定时器TIM1生成SPWM波形的核心原理与代码实现,并涵盖了驱动电路、全桥功率电路及LC滤波器的设计要点与调试技巧,旨在帮助读者从零构建一个可靠的单相全桥逆变器系统。

weixin_29208327的博客 592

Win11系统下Abaqus2022与VS2022+oneAPI2023环境配置全攻略(附VUMAT子程序避坑指南)

本文详细指导在Windows 11系统下,为Abaqus 2022配置Visual Studio 2022与Intel oneAPI 2023的Fortran编译环境,以支持VUMAT等用户子程序开发。内容涵盖软件安装顺序、环境变量关联、快捷方式修改及关键验证步骤,并提供了首个VUMAT子程序的实战编写与模型验证方法,帮助用户高效搭建稳定可靠的仿真开发平台。

pytorch8learner的博客 319

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

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

weixin_34310127的博客 205

revit二次开发环境搭建(2024版)(小白友好)

revit二次开发环境配置,SDK、addin manager和lookup新手友好安装教程

m0_56961251的博客 1422

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

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

shellquery的博客 91

YOLOv8 眼底病变检测(眼底照片)详细说明

本文介绍了基于YOLOv8的眼底病变自动检测系统。该系统可识别糖尿病视网膜病变、青光眼等5类常见眼底病变,包括微动脉瘤、出血点等特征。核心技术包含图像预处理、模型训练、病变检测与量化分析三个模块,采用1024×1024高分辨率输入,针对医学图像特点优化数据增强策略。系统支持批量处理、可视化标注和临床报告生成,提供病变数量、面积密度和严重程度评分等量化指标。特别强调医学合规性要求,需专业医生参与数据标注和模型验证,符合医疗器械认证标准。该系统可作为眼科医生的辅助诊断工具,提高眼底病变筛查效率。

u010117029的博客 134

AI 编程工具面试题(Claude Code、Codex 等)基础篇(一)

文章摘要: 本文整理了20道AI编程工具基础面试题,涵盖Claude Code、Codex CLI、GitHub Copilot等主流工具的核心概念与实操技巧。内容分为工具分类(代码补全/对话式/自主代理)、安装配置(静默部署/API管理)、关键命令(上下文加载/token监控)、调试策略(错误处理/提示优化)及对比选型(Tabnine vs Copilot)。重点解析了终端工具与模型能力的差异,并针对实际场景(如长代码生成/私有化部署)提供解决方案。附追问环节,深入探讨工具边界问题(如上下文溢出处理)和成

篮球界最会写bug的人;程序猿中打球最菜的人。 339

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

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

杭电码农-NEO的博客 2552

华为OD机试真题2025双机位C卷 C++ 实现【卡牌游戏】

小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。

MISAYAONE的博客 283

分支与循环语句 之C语言

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

z541838的博客 1493

手把手教你完成基于cnn的手写数字识别系统MATLAB语言

手写数字识别是经典的 CNN 分类应用之一,常用的数据集就是 MNIST 手写数字数据集,包含 0~9 这 10 个数字的手写图片,每个数字都由 6 万幅训练图像和 1 万幅测试图像构成。为了便于直观分析,这里选择 MATLAB 工具箱提供的 DigitDataset 进行训练识别,读者也可以直接利用 MNIST 数据集或者自己设计的数据集进行实验。其中,数据集文件夹 db 如图 所示。在数据集文件夹 db 里面对每个数字都建立了子文件夹,各自包含 1000 幅 28×28 大小的二维灰度图像。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1369

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

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

VHhhbb的博客 1267

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Golang分支和循环

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

weixin_49129782的博客 389

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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之命令行交互、if判断、for循环、switch分支、goto、标签

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

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

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

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

c0586的专栏 777

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

超详细讲解

ylfxw的博客 1155

详讲C语言的分支与循环

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

2403_86639917的博客 1976
上一篇: 快学 Go 语言第 2 课 —— 变量什么的最讨厌了
下一篇: 人生苦短我用Python?No!学习Python的真正理由其实是
码洞
博客等级 码龄10年 41粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值