返回介绍

06.2.2 多返回值的函数

发布于 2024-08-14 12:50:32 字数 4711 浏览 0 评论 0 收藏 0

如您已经从 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 := func(s int) int {
        return s * s
    }
    fmt.Println("The squre of", y, "is", square(y))

    double := func(s int) int {
        return s + s
    }
    fmt.Println("The double of", y, "is", double(y))

squaredouble 变量分别对应一个匿名函数。糟糕的部分是 squredouble 的值或任何其他对应匿名函数的变量值可以被修改,这意味着,这些变量能修改和计算其他的。

不要认为可以修改匿名函数变量的代码是好的程序实现,因为这可能是错误的根源!

functions.go 的最后一部分如下:

    fmt.Println(doubleSquare(y))
    d, s := doubleSquare(y)
    fmt.Println(d, s)
}

您可以打印如 doubleSquare() 函数的返回值,也可以把它们分配给其他变量。

执行 functions.go 产生如下输出:

$go run functions.go 1 21
The program needs 1 argument!
rMackBook: code mtsouk
$go run functions.go 10
The square of 10 is 100
The double of 10 is 20
20 100
20 100

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文