Golang 开发实战day08 - Multiple Return values
Golang 教程08 - Multiple Return values
1. Multiple return values
1.1 如何理解多个返回值?
Go语言中的多返回值,就像你听了一首歌曲yellow,可以从歌曲里反馈出忧郁和害羞!Goland的多个返回值就类似于如此,设定一个函数,它允许函数返回多个值,就像同时把多个数据传递给调用者一样,是不是很酷?
下面就让我们来揭秘这个魔术!
1. 2 函数声名
首先,我们来看看多返回值的语法:
func 函数名(参数列表) (返回值1类型, 返回值2类型, ...) {// 函数体return 返回值1, 返回值2, ...
}
是不是很简单?和普通函数的定义差不多,只是多了几个返回值类型。
1.3 举例
Example 1:
func calcCircle(radius float64) (area float64, perimeter float64) {area = math.Pi * radius * radiusperimeter = 2 * math.Pi * radiusreturn area, perimeter
}func main() {radius := 5.0area, perimeter := calcCircle(radius)fmt.Println("面积:", area)fmt.Println("周长:", perimeter)
}
output:
面积: 78.53981633974483
周长: 31.41592653589793
Example 2:
func readFile(filename string) ([]byte, error) {data, err := ioutil.ReadFile(filename)if err != nil {return nil, err}return data, nil
}func main() {data, err := readFile("myfile.txt")if err != nil {fmt.Println("错误:", err)} else {fmt.Println("文件内容:", string(data))}
}
Output:
错误: open myfile.txt: The system cannot find the file specified.
代码部分解释如下:
- readFile 函数定义了两个返回值:[]byte 类型的文件内容和 error 类型的错误信息。
- 在函数体内,我们使用 ioutil.ReadFile 函数读取文件内容。
Eample 3:
func StrToInt(s string) (int, error) {// 使用 strconv.Atoi 函数将字符串转换为整数i, err := strconv.Atoi(s)if err != nil {return 0, err}return i, nil
}func main() {s := "123"i, err := StrToInt(s)if err != nil {fmt.Println("错误:", err)} else {fmt.Println("转换后的整数:", i)}
}
Output:
转换后的整数: 123
代码部分解释如下:
- StrToInt 函数定义了两个返回值:int 类型的转换后结果和 error 类型的错误信息。
- 在函数体内,我们使用 strconv.Atoi 函数将字符串转换为整数。
- 如果转换成功,则返回转换后的整数和 nil。
- 如果转换失败,则返回 0 和错误信息。
1.4 multiple return values的灵活运用
多返回值可以让我们将多个相关的数据一起返回,避免了在调用者中进行多次赋值操作,提高了代码的简洁性和可读性。
下面是一些多返回值的应用场景:
- 计算函数:可以同时返回多个计算结果,例如面积和周长、体积和表面积等。(Example 1)
- 错误处理函数:可以同时返回错误信息和错误代码。(Example 2)
- 数据转换函数:可以同时返回转换后的数据和错误信息。(Example 3)
1.5 注意事项
返回值的顺序必须与函数声明中的顺序一致。
即使只使用一个返回值,也需要声明所有返回值类型。
可以使用匿名返回值来忽略某些返回值。
1.6 总结
Go语言中的多返回值是一个非常方便的功能,可以让我们更优雅地编写代码。掌握了多返回值的使用方法,可以提高你的编程效率和代码质量。
不追求山顶的景色,享受攀登的过程,让我们期待下面学习。

相关文章:
Golang 开发实战day08 - Multiple Return values
Golang 教程08 - Multiple Return values 1. Multiple return values 1.1 如何理解多个返回值? Go语言中的多返回值,就像你听了一首歌曲yellow,可以从歌曲里反馈出忧郁和害羞!Goland的多个返回值就类似于如此,设定一…...
如何成为一名优秀的工程师下
身为工程师,理所当然要重视实践,自然科学不管发展到何时都离不开实验。 电子学本身就是 为了指导工程实践。所以不要谈空洞的理论。现在很多毕业生都面临这样的问题,总是谈一些空洞的理论,甚至错误的但还不以为然的理论。实践可以…...
Docker【1】:Docker制作Oracle19C镜像
Docker【1】:Docker制作Oracle19C镜像 1、参考官方文档2、下载相关文件2.1、工具包2.2、Oracle安装包 3、制作镜像3.1、拷贝下载的oracle安装包到制作工具对应版本目录下3.2、开始制作镜像包3.3、制作完成 4、导出导入镜像4.1、镜像导出4.2、镜像导入 5、运行Oracle…...
Layui三级联动插件使用方法
Layui高版本中没有在提供三级联动这个动画了,而是封装成了一个插件,使用方式也很简单 官网 省市县区三级联动下拉选择器 layarea - Layui 第三方扩展组件平台 (layuion.com)https://dev.layuion.com/extend/layarea/#doc html页面约束 整个选择器需要…...
使用iPhone/安卓手机代替门禁卡
文章目录 基础知识ID卡和IC卡ID卡技术IC卡技术IC卡加密方式手机NFC只能模拟IC卡,而不支持ID卡电梯卡可能使用滚动码验证方式,不支持使用手机模拟 (IC类型)门禁卡验证方式仅验证ID(卡号)验证ID分区信息 iPho…...
UE4_动画基础_角色的缩放
以第三人称模板进行制作。 一、首先为角色缩放新建粒子效果 1、新建niagara system,重命名为NS_Shrink。 2、双击打开设置参数: 发射器重命名: Emitter State: 发射器一次喷发数量: 粒子初始大小,生命周…...
【云开发笔记No.20】中台架构的分类
中台现在成了一个到处都在说的词了,甚至在组织架构中,弄几个万金油,也说有了一个中台支撑部门。一方面是滥用,另一个方面,也说明确实有它的作用和意义。 在云计算和数字化转型日益盛行的今天,中台架构已成…...
【leetcode面试经典150题】18.整数转罗马数字(C++)
【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...
NLopt
非线性优化–NLopt (nonlinear optimization)是一个免费的开源的库,提供了很多种非线性优化算的使用接口。 1、其中非常大的优势就是提供多种支持的语言,包括C/ C/ Julia/ Python/ R/ Fortran/ Lua/ OCaml/ Octave等都支持 1. 区别 **COBYLA࿰…...
三防笔记本丨工业笔记本电脑丨助力测绘行业的数字化转型
测绘行业测绘行业一直是高度技术化的领域,其重要性在于为建设、规划和资源管理提供准确的地理数据。然而,随着技术的发展,传统的测绘方法已经难以满足对数据精度和实时性的要求。因此,测绘行业正逐渐向数字化转型,采用…...
创建spring boot项目
使用https://start.aliyun.com/ 创建一个spring boot项目 1、打开https://start.aliyun.com/,获取代码 2、解压下载后文件,使用ide打开,pom。xml文件添加,install一下 <dependency><groupId>org.springframework.bo…...
Mongodb字段更新操作符$currentDate
学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第54篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。 本文基于Mongodb的官方文档,整理了Mongodb字段更新操作符$currentDate的定义ÿ…...
通信安全之数据加密
数据安全的需求如今越来越重要,本篇简单举例给日常的TCP/UDP通信加密,至少能让想干坏事的崽犯罪的成本更高一些(如果会一些BPF的,可能难不住这些崽),能让我们的数据更安全一点。 经典TCP socket编程 下面…...
花一分钟简单认识 CSS 中的规则 —— 级联层 @layer
layer 简介: 声明级联层时,越靠后优先级越高。不属于任何级联层的样式,将自成一层匿名级联层,并置于所有层之后 —— 级别最高。 用法一:在同一文件中 layer base, special; layer special {/* 优先 */li { color: …...
K8s学习三(Pod与探针)
深入学习Pod Pod配置文件 写一个自己的配置文件,nginx-po.yaml apiVersion: v1 #api文档版本 kind: Pod #资源类型对象,也可以配置为像Development,StatefulSet这一类的对象 metadata: # Pod相关的元数据,用于描述Pod的数据name: nginx-po…...
leetcode - 678. Valid Parenthesis String
Description Given a string s containing only three types of characters: ‘(’, ‘)’ and ‘*’, return true if s is valid. The following rules define a valid string: Any left parenthesis ( must have a corresponding right parenthesis ). Any right parenth…...
索尼相机照片清理软件
在使用索尼相机拍摄照片的时候有时我们需要同时拍摄JPG格式和RAW格式,这在后期选图的时候给我们带来一些麻烦。我们固然可以选用Br来管理照片,但是现在我们可以有一个更轻量的软件(8.8MB)来做到一部分功能。 我们将照片从SD卡导出…...
比赛记录:Codeforces Global Round 25 A~E (猜猜题场)
传送门:CF [前题提要]:其实这场打的不是很好.A题一个sb错误看不出来,50min后才过,B题上来就Wa了一发,C题用了没必要的线段树,D题刚开始被60诈骗,一直在想按位考虑.幸好赛时猜出了E,然后又猜出来D,本来掉大分变成上大分…但是这场前几题大都是猜猜题,所以本来不想写题解的.但是…...
Windows系统安装OpenSSH结合VS Code远程ssh连接Ubuntu【内网穿透】
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| 💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-AwzyR2lkHKjD9HYl {font-family:"trebuchet ms",verdana,arial,sans-serif;f…...
Svg Flow Editor 原生svg流程图编辑器(五)
系列文章 Svg Flow Editor 原生svg流程图编辑器(一) Svg Flow Editor 原生svg流程图编辑器(二) Svg Flow Editor 原生svg流程图编辑器(三) Svg Flow Editor 原生svg流程图编辑器(四…...
Sora 2生成素材在AE中频繁掉帧?20年合成老炮儿用CUDA Graph重构图层管线,性能提升3.8倍(含Profile对比图)
更多请点击: https://intelliparadigm.com 第一章:Sora 2生成素材在AE中频繁掉帧?20年合成老炮儿用CUDA Graph重构图层管线,性能提升3.8倍(含Profile对比图) 当Sora 2输出的4K/60fps高动态范围视频序列导入…...
图解人工智能(8)图灵测试作为智能与否的标准
有人不同意将图灵测试作为智能与否的标准。他们认为,就算机器表现得和人一样,也不能说机器拥有了智能,因为它只是一堆电路,和人的思维方式完全不同。你是否赞同这种说法?说说你赞同或反对的理由。开放讨论题。有几种观…...
Argo CD 集成 Helmfile 插件:实现 GitOps 下复杂应用声明式部署
1. 项目概述与核心价值如果你正在使用 Argo CD 管理 Kubernetes 集群,并且你的应用清单是由 Helmfile 来编排的,那么travisghansen/argo-cd-helmfile这个项目很可能就是你一直在寻找的“粘合剂”。简单来说,它是一个专门为 Argo CD 设计的 He…...
NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来
NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来 很多人第一次遇到 NCCL watchdog timeout,第一反应都是三件事:查网络、调大 timeout、怀疑 NCCL 又炸了。这个顺序经常不够用。因为在很多真实训…...
ElevenLabs Enterprise方案深度拆解:从API限流策略到GDPR语音数据主权管理的7层安全加固实践
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs Enterprise方案全景概览 ElevenLabs Enterprise 是面向中大型组织构建的语音合成与语音识别一体化平台,专为高并发、多租户、合规性敏感场景设计。其核心能力覆盖实时TTS流式输出…...
除了综合,DC Shell还能这么用:快速搭建一个轻量级RTL/Netlist查看与调试环境
DC Shell的隐藏技能:打造高效RTL/Netlist交互式调试环境 在数字芯片设计流程中,工程师们经常需要快速查看和分析RTL或网表文件。传统方法要么启动完整的综合流程耗时费力,要么依赖第三方工具可能面临兼容性问题。实际上,Synopsys …...
大部分 App 没准备好被 Agent 操作——这是设计缺陷,不是功能缺失
大部分 App 没准备好被 Agent 操作——这是设计缺陷,不是功能缺失 2025 年被很多人称为「AI Agent 元年」。 Claude Code、Cursor、Windsurf……一批 agentic 工具密集涌现,Agent 不再只是聊天框里的助手,它开始真正「做事」:自己…...
集合进阶(Collection)
一、集合概述和分类1.1 集合的分类如下图所示:一类是单列集合元素是一个一个的,另一类是双列集合元素是一对一对的。 主要学习Collection单列集合。Collection是单列集合的根接口,也称之为顶层接口,Collection接口下面又有两个子接…...
Excel+ChatGPT函数实战:零代码实现语义理解与智能数据处理
1. 为什么说“在Excel里直接调用ChatGPT”不是噱头,而是真正在改写数据处理的工作流 你有没有过这样的时刻:盯着Excel表格里一列杂乱的客户反馈,想快速标出哪些是投诉、哪些是表扬,却卡在手动翻查、复制粘贴、反复试错公式上&…...
哪个降AI软件好?2026年4款主流降AI工具按场景对位横评!
哪个降AI软件好?2026年4款主流降AI工具按场景对位横评! 「哪个降 AI 软件好」没有标准答案。学生最常踩的坑是把这个问题简化成「哪款最便宜」或者「哪款最有效」——其实好不好用看你的场景。学校送知网严标准、送维普重灾区、自媒体被判 AI、本科双重问…...
