当前位置: 首页 > news >正文

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&#xff0…...

三防笔记本丨工业笔记本电脑丨助力测绘行业的数字化转型

测绘行业测绘行业一直是高度技术化的领域,其重要性在于为建设、规划和资源管理提供准确的地理数据。然而,随着技术的发展,传统的测绘方法已经难以满足对数据精度和实时性的要求。因此,测绘行业正逐渐向数字化转型,采用…...

创建spring boot项目

使用https://start.aliyun.com/ 创建一个spring boot项目 1、打开https://start.aliyun.com/&#xff0c;获取代码 2、解压下载后文件&#xff0c;使用ide打开&#xff0c;pom。xml文件添加&#xff0c;install一下 <dependency><groupId>org.springframework.bo…...

Mongodb字段更新操作符$currentDate

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第54篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。 本文基于Mongodb的官方文档&#xff0c;整理了Mongodb字段更新操作符$currentDate的定义&#xff…...

通信安全之数据加密

数据安全的需求如今越来越重要&#xff0c;本篇简单举例给日常的TCP/UDP通信加密&#xff0c;至少能让想干坏事的崽犯罪的成本更高一些&#xff08;如果会一些BPF的&#xff0c;可能难不住这些崽&#xff09;&#xff0c;能让我们的数据更安全一点。 经典TCP socket编程 下面…...

花一分钟简单认识 CSS 中的规则 —— 级联层 @layer

layer 简介&#xff1a; 声明级联层时&#xff0c;越靠后优先级越高。不属于任何级联层的样式&#xff0c;将自成一层匿名级联层&#xff0c;并置于所有层之后 —— 级别最高。 用法一&#xff1a;在同一文件中 layer base, special; layer special {/* 优先 */li { color: …...

K8s学习三(Pod与探针)

深入学习Pod Pod配置文件 写一个自己的配置文件,nginx-po.yaml apiVersion: v1 #api文档版本 kind: Pod #资源类型对象&#xff0c;也可以配置为像Development&#xff0c;StatefulSet这一类的对象 metadata: # Pod相关的元数据&#xff0c;用于描述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格式&#xff0c;这在后期选图的时候给我们带来一些麻烦。我们固然可以选用Br来管理照片&#xff0c;但是现在我们可以有一个更轻量的软件&#xff08;8.8MB&#xff09;来做到一部分功能。 我们将照片从SD卡导出…...

比赛记录:Codeforces Global Round 25 A~E (猜猜题场)

传送门:CF [前题提要]:其实这场打的不是很好.A题一个sb错误看不出来,50min后才过,B题上来就Wa了一发,C题用了没必要的线段树,D题刚开始被60诈骗,一直在想按位考虑.幸好赛时猜出了E,然后又猜出来D,本来掉大分变成上大分…但是这场前几题大都是猜猜题,所以本来不想写题解的.但是…...

Windows系统安装OpenSSH结合VS Code远程ssh连接Ubuntu【内网穿透】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-AwzyR2lkHKjD9HYl {font-family:"trebuchet ms",verdana,arial,sans-serif;f…...

Svg Flow Editor 原生svg流程图编辑器(五)

系列文章 Svg Flow Editor 原生svg流程图编辑器&#xff08;一&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;二&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;三&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;四&#xf…...

数字晶体管选型参数,结构原理,工艺与注意问题总结

🏡《总目录》 目录 1,概述2,工作原理2.1,AND 门(与门),2.2,OR 门(或门):2.3,NOT 门(非门):2.4,NAND 门(与非门):2.5,NOR 门(或非门):3,结构特点3.1,TTL(Transistor-Transistor Logic)晶体管...

lua学习笔记9(字典的学习)

print("********************字典的学习***********************") a{["凌少"]"傻逼",["我"]"天才",["age"]24,["daihao"]114514,["8848"]20000} --访问单个变量 print(a["凌少"])…...

第六篇: 3.5 性能效果 (Performance)- IAB/MRC及《增强现实广告效果测量指南1.0》

​​​​​​​ 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇 广告效果测量定义和其他矩阵之- 3.1 广告印象&#xff08;AD Impression&#xff09;第三篇 广告效果测量定义和其他矩阵之- 3.2 可见性 &#xff08;Viewability…...

mysql学习笔记NO.2

Java操作数据库、表笔记 1.创建数据库 创建数据库的步骤如下&#xff1a; 导入所需的Java数据库连接驱动&#xff08;如MySQL驱动&#xff09;。使用JDBC连接到数据库。执行SQL语句创建数据库。 import java.sql.Connection; import java.sql.DriverManager; import java.…...

C++11:lambda表达式 包装器

C11&#xff1a;lambda表达式 & 包装器 lambda表达式包装器functionbind lambda表达式 在C98中&#xff0c;如果想对一个结构体数组使用sort排序&#xff0c;那么我们就需要自己些仿函数。 比如以下结构体&#xff1a; struct Goods {string _name; // 名字double _pric…...

Node.js HTTP/2 CONTINUATION 拒绝服务漏洞(CVE-2024-27983)

Node.js 是开源、跨平台的 JavaScript 运行时环境。CONTINUATION泛洪攻击被发现存在于多个HTTP/2协议实现中。 在受影响版本中&#xff0c;由于Node.js针对HTTP/2协议的实现不当&#xff0c;未正确处理多个CONTINUATION帧的情况&#xff0c;在node::http2::Http2Session::~Htt…...

YOLOV8 + 双目测距

YOLOV8 双目测距 1. 环境配置2. 测距流程和原理2.1 测距流程2.2 测距原理 3. 代码部分解析3.1 相机参数stereoconfig.py3.2 测距部分3.3 主代码yolov8-stereo.py 4. 实验结果4.1 测距4.2 测距跟踪4.3 测距跟踪分割4.4 视频展示 相关文章 1. YOLOv5双目测距&#xff08;python&…...

前端:SVG绘制流程图

效果 代码 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>SVG流程图示例</title><style>/* CSS 样式 */</style><script src"js/index.js"></script…...

【Linux系列】如何确定当前运行的是 RHEL 9 还是 RHEL 8?

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

vscode开发java的插件和配置

推荐插件 .vscode/extensions.json {"recommendations": ["redhat.fabric8-analytics","ms-azuretools.vscode-docker","vscjava.vscode-java-pack","eamodio.gitlens","obkoro1.korofileheader","redhat.j…...

在印度做外贸需要什么网站/网络口碑营销名词解释

为了兼容win7 &#xff0c;使用C# WPF开发时&#xff0c;经常遇到目标电脑win7版本过低的情况&#xff0c;这时需要将.NET Framework版本降低&#xff0c;但是发布会报错&#xff0c;必须使用下载相关组件&#xff0c;笔者找到故共享&#xff0c;方便后来人。 NDP452-KB290190…...

wordpress阅读次数修改/公司想建个网站怎么弄

1、系统已有类 所有的 java 对象都存储在堆中。 java 类 实例&#xff1a; import java.text.DateFormatSymbols; import java.util.*; public class CalendarTest {public static void main(String[] args){//构造一个日历对象&#xff0c;并用当前日期和时间进行初始化Grego…...

java ee做网站/搜易网服务介绍

一&#xff0c;.NET Core 自宿主应用程序个头有点大发布.NET Core应用程序有两个方式&#xff0c;一种是“便携式”&#xff0c;一种是“自宿主式”。便携式发布时&#xff0c;目标程序不带.net core运行环境&#xff0c;所以“个头”很小&#xff0c;可能只有几十K几百K字节&a…...

网站开发补全/最近新闻

下文介绍php中文网典版本的有关未来Web 应用程序。可执行文件将消亡&#xff0c;JavaScript 将存活编译的可执行文件(如 C 或 Java 语言的编译)不能在不同的硬件上运行。可执行文件(EXE 文件、ActiveX 和 COM 对象、DLL 文件)是防止运行在互联网上的应用程序发展的组件。未来的…...

中国有名的模版网站/网站关键词排名分析

返回指定数值在指定数组区域中的位置。MATCH函数是EXCEL主要的查找函数之一&#xff0c;该函数通常有以下几方面用途&#xff1a;(1)确定列表中中某个值的位置;(2)对某个输入值进行检验&#xff0c;确定这个值是否存在某个列表中;(3)判断某列表中是否存在重复数据;(4)定位某一列…...

wordpress 底部音乐播放器插件/百度客户端下载安装

在开始 GUI 自动化之前&#xff0c;你应该知道如何避免可能发生的问题。Python 能以想象不到的速度移动鼠标并击键。实际上&#xff0c;它可能太快&#xff0c;导致其他程序跟不上。而且&#xff0c;如果出了问题&#xff0c;但你的程序继续到处移动鼠标&#xff0c;可能很难搞…...