返回介绍

06.2.5 返回值为指针的函数

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

如您在第四章了解到的,在 pointerStruct.go 程序中介绍的复合类型的使用,它是一个非常好的练习,使用一个独立的函数来创建一个新的结构变量并返回指向它的指针。因此,函数返回指针是非常常见的。通常讲,函数简化程序结构并让开发者把较重要的处理逻辑集中起来,而不是总是复制相同的代码。这节将使用一个非常简单的例子,returnPtr.go

returnPtr.go 的第一部分代码如下:

package main

import (
    "fmt"
)

func returnPtr(x int) *int {
    y := x * x
    return &y
}

除了必须的引入部分,这段代码定义了一个返回 int 变量指针的新函数。唯一要记住的是使用 &yreturn 表达式来返回 y 变量的内存地址。

returnPtr.go 的第二部分如下:

func main() {
    sq := returnPtr(10)
    fmt.Println("sq:", *sq)

如您所知,* 符号解引用一个指针变量,就是它返回存储在内存地址里的实际值而不是内存地址本身。

returnPtr.go 的最后一段代码如下:

    fmt.Println("sq:", sq)
}

这段代码返回 sq 变量的内存地址,而不是存储在它里面的 int 值。

执行 returnPtr.go 将看到如下输出(内存地址可能会不同):

$go run returnPtr.go
sq: 100
sq: 0xc420014088

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

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

发布评论

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