06.2.2 多返回值的函数
如您已经从 strconv.atoi() 等函数所知,Go 函数可以返回多个不同的值,这就避免了您必须创建一个专用的结构,以便能够同时从一个函数接收多个值。您可以声明一个如下返回四个值的函数,两个 int 值,一个 float64 值和一个 string:
func aFunction() (int, int, float64, string){
}现在来以 functions.go 做例子来说明匿名函数和返回多值的函数。相关代码分五部分来介绍。
functions.go 的第一段代码如下:
package main
import (
"fmt"
"os"
"strconv"
)functions.go 的第二段代码如下:
func doubleSquare(x int) (int, int) {
return x * 2, x * x
}这里您可以看到一个名为 doubleSquare() 函数的定义和实现,它只需要一个 int 参数并返回两个 int 值。
functions.go 的第三部分如下:
func main() {
arguments := os.Args
if len(arguments) != 2 {
fmt.Println("The program needs 1 argument!")
return
}
y, err := strconv.Atoi(arguments[1])
if err != nil {
fmt.Println(err)
return
}上面的代码处理程序的命令行参数。
functions.go 的第四部分包含如下代码:
square 和 double 变量分别对应一个匿名函数。糟糕的部分是 squre,double 的值或任何其他对应匿名函数的变量值可以被修改,这意味着,这些变量能修改和计算其他的。
不要认为可以修改匿名函数变量的代码是好的程序实现,因为这可能是错误的根源!
functions.go 的最后一部分如下:
您可以打印如 doubleSquare() 函数的返回值,也可以把它们分配给其他变量。
执行 functions.go 产生如下输出:
Last updated
Was this helpful?