Go函数多返回值
Nadeal2022年4月27日 09:25个人博客623
这些年,学习的编程里,默认的一个共识是函数返回值就一个。而接触了Go以后,Go却告诉我:函数返回值可以多个。这一知识点被普及得我五体投地,那种感觉妙不可言。以往编写代码中,为了返回多个值,不得不借助数组、实体Model、或者键值对的形式。支持函数返回多个值,却是可以在编程中省去一些麻烦。
首先,还是来看代码:
package main
import (
"fmt"
"strconv"
)
func main(){
aValue, bValue, cValue := returnManyValues()
fmt.Println("aValue = " + strconv.Itoa(aValue))
fmt.Println("bValue = " + strconv.Itoa(bValue))
fmt.Println("cValue = " + strconv.Itoa(cValue))
}
// 第一对括号是传参,这里没有传参则括号内为空, 第二对括号内的三个“int”,是定义的函数返回值的三个类型,多少个返回值就在括号内填入多少个类型
func returnManyValues() (int, int, int) {
var a int = 10
var b int = 35
var c int = 46
a = b * c - a
b = a + 4
c = a + c * (a - b)
return a, b, c
}
通过以上的代码,显示结果如图所示:
如果函数返回的多个值不想引用,可以通过“_”来替代,例如将cValue的值替换,不引用最后一个返回值,代码如下:
package main
import (
"fmt"
"strconv"
)
func main(){
aValue, bValue, _ := returnManyValues()
fmt.Println("aValue = " + strconv.Itoa(aValue))
fmt.Println("bValue = " + strconv.Itoa(bValue))
//fmt.Println("cValue = " + strconv.Itoa(cValue))
}
// 第一对括号是传参,这里没有传参则括号内为空, 第二对括号内的三个“int”,是定义的函数返回值的三个类型,多少个返回值就在括号内填入多少个类型
func returnManyValues() (int, int, int) {
var a int = 10
var b int = 35
var c int = 46
a = b * c - a
b = a + 4
c = a + c * (a - b)
return a, b, c
}
则运行效果如图所示:
如果函数只是返回一个值,则返回值的括号去掉:
package main
import (
"fmt"
"strconv"
)
func main(){
aValue := returnManyValues()
fmt.Println("aValue = " + strconv.Itoa(aValue))
//fmt.Println("bValue = " + strconv.Itoa(bValue))
//fmt.Println("cValue = " + strconv.Itoa(cValue))
}
func returnManyValues() int {
var a int = 10
var b int = 35
var c int = 46
a = b * c - a
b = a + 4
c = a + c * (a - b)
return a
}
结果则只输入aValue的值
当我在看Golang的书学习的时候,感觉很新奇,函数返回值还能这么操作的。正所谓看十遍不如代码敲一遍,走两步看看效果。
很赞哦!
(
1
)