Go+语言的多返回值函数

Posted 蒙娜丽宁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go+语言的多返回值函数相关的知识,希望对你有一定的参考价值。

目录

多返回值函数基础

示例代码

处理不需要的返回值

示例代码

命名返回参数

示例代码

return语句会覆盖命名返回参数的值                

示例代码

多返回值的重要作用:返回error

示例代码



多返回值函数基础

        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+语言的多返回值函数的主要内容,如果未能解决你的问题,请参考以下文章

go语言

Go语言函数返回值

013_go语言中的函数多返回值

go语言学习笔记 — 基础 — 函数:函数的返回值

GO基础之函数

Go语言入门教程