Go语言函数返回值

Go语言函数返回值教程

Go 语言函数 可以不返回任何值,也可以返回一个或者多个值,其他的编程语言的函数一般只可以不返回值,最多只能返回一个值,这是 Go 语言函数与其他编程语言函数的区别。

同时,如果相邻的几个函数返回值的类型相同,那么我们可以省略前几个返回值的类型,只需要写最后一个返回值的类型即可。

Go语言函数无返回值详解

语法

func funcName(param1, param2 paramType1, ...){
	//执行语句...
}

说明

这里的函数 funcName,没有返回任何的值,因此没有返回值列表,同时,在函数体里面不需要使用 return 语句。

Go语言函数返回多个值详解

语法

func funcName(param1, param2 paramType1, ...)(returnType1, returnType2, ...){
	//执行语句...
	return 返回值列表
}

说明

函数的返回值可以指定一个或者多个,当返回值是多个时,需要将 returnType 的列表使用小括号括起来,不然语法会报错。

在函数返回多个值时,调用函数时,也必须使用相对于的参数个数来接受返回值,如果不需要的返回值,我们可以使用匿名变量来接受保存。

案例

不返回任何值

Go 语言函数,可以不返回任何值

package main
import (
	"fmt"
)
func printline(){
	fmt.Println("========================================")
}
func main() {
	fmt.Println("嗨客网(www.haicoder.net)")
	//Go语言函数,可以不返回任何值
	fmt.Println("嗨客网")
	printline()
	fmt.Println("HaiCoder")
}

程序运行后,控制台输出如下:

07_golang函数不返回值.png

我们定义了一个函数 printline,该函数只实现了打印一个换行间隔符的作用,因此该函数没有任何函数参数,同时也没有任何的函数返回值。

因为没有任何的函数返回值,因此在函数体里面,不需要写任何的 return 语句。

返回一个值

函数只返回一个值

package main
import (
	"fmt"
)
func gcdNormal(x, y int) int {
	var n int
	if x > y {
		n = y
	} else {
		n = x
	}
	for i := n; i >= 1; i-- {
		if x%i == 0 && y%i == 0 {
			return i
		}
	}
	return 1
}
func main() {
	fmt.Println("嗨客网(www.haicoder.net)")
	//函数只返回一个值
	returnVal := gcdNormal(10,20)
	fmt.Println("returnVal =", returnVal)
}	

程序运行后,控制台输出如下:

08_golang函数返回一个值.png

我们定义了一个函数 gcdNormal,传入两个 int 类型 的参数 a 和 b,函数返回一个 int 类型的变量。

在 main() 函数里面,我们调用了 gcdNormal 函数,并传入了两个参数 10 和 20,使用 gcd 变量来接受 gcdNormal 函数返回的值,最后使用 Println() 函数打印最后的结果。

返回多个值

Go 语言的函数可以返回多个值

package main
import (
	"fmt"
	"math"
)
func getPageCount(pageSize int)(bool, int){
	if pageSize <= 0{
		return false, 0
	}
	pageCount := math.Ceil(float64(100/pageSize))
	return true, int(pageCount)
}
func main() {
	fmt.Println("嗨客网(www.haicoder.net)")
	//Go语言的函数可以返回多个值
	if isOk, pageCount := getPageCount(10); !isOk{
		fmt.Println("Error")
	}else{
		fmt.Println("Ok, PageCount =", pageCount)
	}
}

程序运行后,控制台输出如下:

09_golang函数返回多个值.png

我们定义了一个函数 getPageCount,传入两个 int类型的参数 pageSize,函数返回一个 bool 类型的变量表示函数是否执行成功,和一个 int 类型的变量表示最终由多少页数据。

在 main() 函数里面,我们调用了 getPageCount 函数,并传入参数 10,同时,使用两个变量来接受函数的返回值列表。

Go语言函数参数返回值总结

Go 语言中函数可以不返回任何值,也可以返回一个或者多个值。Go 语言函数不返回任何值语法:

func funcName(param1, param2 paramType1, ...){
	//执行语句...
}

Go 语言函数返回多个值语法:

func funcName(param1, param2 paramType1, ...)(returnType1, returnType2, ...){
	//执行语句...
	return 返回值列表
}

当返回值是多个时,需要将 returnType 的列表使用小括号括起来,不然语法会报错。调用函数时,也必须使用相对于的参数个数来接受返回值,如果不需要的返回值,我们可以使用匿名变量来接受保存。