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

多返回值(Multiple Return Values)- 《Go语言实战指南》

Go 语言支持函数返回多个值,这一特性在实际开发中非常常见,尤其用于错误处理。


一、函数返回多个值的基本语法

func 函数名(参数列表) (返回值1类型, 返回值2类型, ...) {// 函数体return 值1, 值2, ...
}
示例:计算商和余数
func divide(a, b int) (int, int) {return a / b, a % b
}q, r := divide(10, 3)
fmt.Println("商:", q, "余数:", r)

输出:

商: 3 余数: 1

二、用于错误处理

Go 没有异常机制,采用 返回值 + error 的方式处理错误,这是多返回值的典型用法。

func safeDivide(a, b int) (int, error) {if b == 0 {return 0, fmt.Errorf("除数不能为0")}return a / b, nil
}
使用方式:
result, err := safeDivide(10, 0)
if err != nil {fmt.Println("出错:", err)
} else {fmt.Println("结果:", result)
}

三、返回值命名

Go 支持为返回值命名,适合函数逻辑较复杂时提高可读性:

func swap(a, b int) (x, y int) {x = by = areturn // 省略了 return 后的变量
}

四、忽略不需要的返回值(用 _

当你只关心部分返回值时,可以用 _ 忽略其他值:

_, remainder := divide(10, 3)
fmt.Println("只看余数:", remainder)

五、结合多值返回的实际应用场景

1. 文件操作
data, err := os.ReadFile("data.txt")
if err != nil {log.Fatal(err)
}
fmt.Println(string(data))
2. 网络响应
resp, err := http.Get("https://example.com")
if err != nil {log.Fatal(err)
}
defer resp.Body.Close()

六、使用建议

场景建议做法
错误处理返回 (值, error)
成对值使用 (value1, value2) 明确区分
无用值使用 _ 忽略
结构清晰使用命名返回值提升可读性

七、小结

  • • Go 的多返回值提升了代码的表达能力;
  • • 搭配 error 实现显式错误控制;
  • • 命名返回值+裸 return 使函数更清晰;
  • • 使用 _ 忽略无用值,避免不必要变量。

http://www.lryc.cn/news/2378230.html

相关文章:

  • 致远OA人事标准模块功能简介【附应用包百度网盘下载地址,官方售价4W】
  • Python-简单网络编程 I
  • 鸿蒙北向应用开发: deveco5.0 创建开源鸿蒙项目
  • 数据库故障排查指南:从入门到精通
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice自定义Word模版中的数据区域
  • 基于基金净值百分位的交易策略
  • 2025蓝桥杯JAVA编程题练习Day8
  • 通信安全堡垒:profinet转ethernet ip主网关提升冶炼安全与连接
  • DL00219-基于深度学习的水稻病害检测系统含源码
  • 在24GB显存大小的GPU上运行27GB的Pytorch模型
  • 【数据机构】2. 线性表之“链表”
  • 【51单片机中断】
  • JavaSE基础语法之方法
  • 华为网路设备学习-22(路由器OSPF-LSA及特殊详解)
  • go-数据库基本操作
  • vue 中绑定样式 【style样式绑定】
  • 印刷业直角坐标型码垛机器人系统设计与应用研究
  • Mysql存储过程(附案例)
  • 【Web应用】Vue 项目前端项目文件夹和文件介绍
  • Stratix 10 FPGA DDR4 选型
  • Rust 输出到命令行
  • 费曼技巧及提高计划
  • 扩展:React 项目执行 yarn eject 后的 config 目录结构详解
  • CMU-15445(4)——PROJECT#1-BufferPoolManager-Task#2
  • 百度智能云千帆携手联想,共创MCP生态宇宙
  • Python 中的 typing.ClassVar 详解
  • 【动态导通电阻】GaN HEMT动态导通电阻的精确测量
  • java 使用zxing生成条形码(可自定义文字位置、边框样式)
  • day19-线性表(顺序表)(链表I)
  • CSS- 2.1 实战之图文混排、表格、表单、学校官网一级导航栏