Nadeal

您现在的位置是:首页>所属分类

所属分类

Go函数多返回值

Nadeal2022年4月27日 09:25个人博客956
这些年,学习的编程里,默认的一个共识是函数返回值就一个。而接触了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的书学习的时候,感觉很新奇,函数返回值还能这么操作的。正所谓看十遍不如代码敲一遍,走两步看看效果。