Go+语言的多返回值函数
Posted 蒙娜丽宁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go+语言的多返回值函数相关的知识,希望对你有一定的参考价值。
目录
多返回值函数基础
Go++语言支持多返回值函数,一个函数可以返回任意多个参数,两个参数之间用逗号(,)分割。
示例代码
package main
func calc(a int, b int) (int, int, int, int)
return a + b, a - b, a * b, a / b
func main()
a, b, c, d := calc(20, 5)
println(a, b, c, d)
这是一个用于计算a和b两个整数的加、减、乘、除的函数,该函数同时返回了这4个值。在main函数中调用了calc函数。不过要注意,在调用calc函数时,用于接收函数返回值的变量个数必须与函数返回值的个数相同,否则运行程序时,会抛出如下图所示的错误信息。
处理不需要的返回值
在Go+语言中,所有定义的变量必须使用。如果一个函数的某些返回值不需要,可以用下划线“_”代替变量。
示例代码
package main
func calc(a int, b int) (int, int, int, int)
return a + b, a - b, a * b, a / b
func main()
var a, b, _, _ = calc(20, 5) // 省略了a * b和a / b的值
println(a, b)
命名返回参数
如果函数的返回值太多,用return语句可能会写错(顺序对不上),所以可以为每一个返回值起一个名字,在返回值时直接为命名返回参数赋值即可。
示例代码
func calc(a int, b int) (sum int, sub int, mul int, div int)
sum = a + b
sub = a - b
mul = a * b
div = a / b
return
func main()
var a, b, c, d = calc(20, 5)
println(a, b, c, d)
return语句会覆盖命名返回参数的值
如果仍然要使用return语句返回值,那么return语句会覆盖为命名返回参数设置的值。
示例代码
package main
func calc(a int, b int) (sum int, sub int, mul int, div int)
sum = a + b
sub = a - b
mul = a * b
div = a / b
return 2 * sum, 2 * sub, 2 * mul, 2 * div
func main()
var a, b, c, d = calc(20, 5)
println(a, b, c, d)
多返回值的重要作用:返回error
由于Go+语言没有try...catch语句,所以大多数时候用error返回错误,所以Go+会支持多返回值。这样在函数返回error的同时,还可以返回其他的值。
示例代码
package main
import "errors"
func calc(a int, b int) (sum int, sub int, mul int, div int, err error)
if b == 0
err = errors.New("错误:分母不能为0!")
return
sum = a + b
sub = a - b
mul = a * b
div = a / b
err = nil
return
func main()
var a1, b1, c1, d1, err1 = calc(20, 5)
if err1 == nil
println(a1, b1, c1, d1)
else
println(err1.Error())
var a2, b2, c2, d2, err2 = calc(20, 0)
if err2 == nil
println(a2, b2, c2, d2)
else
println(err2.Error())
运行程序,会输出如下图所示的内容。
以上是关于Go+语言的多返回值函数的主要内容,如果未能解决你的问题,请参考以下文章