《快学 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 语言 第 3 课 —— 分支与循环

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

codehole_的博客 181

法律AI工具横评:Kimi Work与WorkBuddy,谁更适合法律人?

在人工智能技术日益普及的今天,自然语言处理(NLP)和大语言模型(LLM)正深刻改变着专业领域的工作范式。其核心原理在于通过海量数据训练,使模型能够理解、生成和推理人类语言。这一技术价值在于将从业者从繁琐、重复的信息处理工作中解放出来,极大提升工作效率与知识获取的便捷性。在法律、金融、咨询等对文本处理要求极高的行业,AI助手已展现出在文档分析、信息检索和内容生成方面的巨大潜力。具体到法律应用场景,AI工具能够辅助完成合同审查、法律检索和文书起草等核心任务,成为专业人士的得力助手。本文聚焦于近期备受关注的两款

weixin_30279671的博客 567

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

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

weixin_40581617的博客 375

从零到一:手把手教你用Python搭建医学影像识别CNN模型(附完整代码)

本文详细介绍了如何使用Python和TensorFlow/Keras从零开始构建一个医学影像识别的CNN模型,涵盖数据预处理、模型架构设计、训练调优及部署全流程。通过实战案例和完整代码,帮助开发者快速掌握深度学习在医学影像识别中的应用,特别适合医疗AI领域的初学者和研究者。

spark7igniter的博客 200

从零开始:用君正T23ZN打造智能门锁双摄系统(含代码示例与调试技巧)

本文详细介绍了基于君正T23ZN视频处理芯片构建智能门锁双摄系统的完整实战方案。内容涵盖硬件选型与核心电路设计、软件开发环境搭建、双摄驱动框架、图像信号处理(ISP)调优、人脸识别算法集成与性能优化,以及系统调试与稳定性保障。文章提供了丰富的代码示例和调试技巧,旨在帮助嵌入式开发者高效实现具备人脸识别与监控功能的低功耗智能门锁视觉系统。

opencv7vision的博客 717

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

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

weixin_33719619的博客 538

VMware player桥接模式不能联网的解决方法

VMware虚拟机下主要使用两种网络连接方式:桥接模式、NAT模式。 桥接模式:查一下,虚拟机独立IP。 NAT模式:与电脑共享IP、需要映射应用服务的端口。 我的需求需要独立IP,于是使用桥接。 网络连接失败。 个人主机系统的网络设置: 设置 - 网络和 Internet - 更改适配器设置 给虚拟机设置网络适配器 只保留,点击确定,确定。 重新运行虚拟机。 ...

Mark_md的博客 9450

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

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

weixin_34310127的博客 205

Claude Code 100个真实案例 - 用AI搭建LangChain多工具Agent(自主搜索+查询)

本案例展示如何使用 Claude Code 搭建一个 LangChain 多工具 Agent 系统。Agent 能够自主决定调用搜索引擎、数据库查询、天气查询、计算器等工具,像人类助手一样拆解问题并逐步解决。

yueyeguzhuo的专栏 560

14、脑肿瘤复发预测与转移瘤跟踪的自动化方法

本文介绍两种脑肿瘤相关自动化方法:一种用于预测胶质瘤切除术后的肿瘤复发位置,结合图像配准、静态模型和动态模拟模型,利用患者的DTI数据进行预测;另一种用于在纵向扫描中跟踪转移性脑肿瘤,通过联合求解配准参数估计和图像变化标记问题,提高肿瘤跟踪的准确性和效率。文章同时分析了两种方法的优势与挑战,并提出了未来研究方向,旨在为脑肿瘤的诊断和治疗提供更可靠的工具。

defi6farmer的博客 124

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

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

杭电码农-NEO的博客 2552

万字长文,小白新手怎么开始做YOLO实验,从零开始教!整体思路在这里,科研指南针!

万字长文,小白新手怎么开始做YOLO实验,从零开始教!整体思路在这里,科研指南针!

Coding... 1万+

分支与循环语句 之C语言

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

z541838的博客 1493

Python爬虫实战:利用Scrapy+Playwright高效爬取TED演讲数据

在当今信息爆炸的时代,TED演讲作为全球知名的思想传播平台,汇聚了各领域顶尖人才的精彩分享。对于数据分析师、研究人员或内容创作者来说,获取TED演讲的完整数据集具有重要价值。本文将详细介绍如何使用Python中最先进的爬虫技术组合——Scrapy框架配合Playwright浏览器自动化工具,高效爬取TED演讲的完整数据。传统爬虫技术在处理现代动态网页时面临诸多挑战,而本文将展示如何利用最新工具解决这些问题。

2201_76125261的博客 207

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

VHhhbb的博客 1267

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Golang分支和循环

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

weixin_49129782的博客 389

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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 语言》第 2 课 —— 变量什么的最讨厌了
下一篇: 《快学 Go 语言》第 4 课 —— 低调的数组
码洞
博客等级 码龄10年 41粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值