golang多返回值写法

看热闹不嫌事大系列-------->如何看待函数返回多个值的设计? From 知乎

这个号称是Golang特性之一的 多返回值写法 给开发者带来了许多便捷的地方,由于Golang的语法中规定没有使用过只是初始化了的变量会报错,所以,引入了多返回值的方法,因为这样做就可以用_来舍弃掉之前声明但是又不想使用的变量了。

先来看一段多返回值的标准写法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main
import (
"fmt"
)
func dataOp(data1 float32 ,data2 float32)(float32,float32){
return data1+data2,data1*data2
}
func main() {
var x float32
var y float32
x=1.1
y=2.2
added,mutied:=dataOp(x,y)
fmt.Printf("%f,%f",added,mutied);
}

顾名思义,也就是dataOp()返回了两个值。(e.g.中是data1+data2和 data1*data2).然后调用的时候的写法就是定义两个变量来接收dataOp的返回值。

然而返回值的先后顺序也必须的一一对应的。

改一下代码,我们舍弃掉第一个返回值。

Change

1
added,mutied:=dataOp(x,y)

To

1
_,mutied:=dataOp(x,y)

验证结果后会发现,返回的是乘积值:2.420000

利用这种原理,我们可以大大简化代码的冗余,而且,我们是可以自由选择返回值,不要的就可以释放掉,优化程序的内存管理。