首页 > 后端开发 > Golang > Go 中的指针如何工作?

Go 中的指针如何工作?

Mary-Kate Olsen
发布: 2024-11-21 04:39:14
原创
237 人浏览过

How Do Pointers to Pointers Work in Go?

Go 中指向指针的指针

在编程中,指向指针的指针可以提供一定程度的间接性,这在某些情况下很有用。考虑以下 Go 代码:

package main

import "fmt"

func main() {
    var num int

    fmt.Println(&num) // address of num
    makePointer(&num)
}

func makePointer(firstPointer *int) {
    fmt.Println(firstPointer)  // address of num
    fmt.Println(&firstPointer) // address of firstPointer
    makePointerToAPointer(&firstPointer)
}

func makePointerToAPointer(secondPointer **int) {
    fmt.Println(secondPointer)  // address of firstPointer
    fmt.Println(&secondPointer) // address of secondPointer
}
登录后复制

此代码演示了指向指针的指针如何工作。整型变量 num 的地址存储在 &num 中。 makePointer 函数将&num 的地址作为参数,该地址存储在firstPointer 中。 makePointerToAPointer 函数将firstPointer 的地址作为参数,该地址存储在secondPointer 中。

实际应用

虽然看起来可能很复杂,但指向指针的指针确实有用生产代码中的情况:

  • 函数参数: 指向指针的指针在函数参数中很有用,允许函数修改指针本身,而不仅仅是它指向的值。例如,在 Go 编译器的内部,某些函数采用 **Node 参数来操作对象的指针。
  • 外部指针: 指向指针的指针也可以用于以下情况:库或外部代码对需要修改的指针进行操作。例如,HTML 解析函数可能需要 **html.Node 指针来处理可能会或可能不会被解析的 HTML 页面。
  • 其他返回值: 在没有多个返回值的语言中,指向指针的指针可用于提供额外的返回值。在 Objective-C 中,许多方法都采用 NSError** 参数来选择性地返回错误。

指向指针的指针在编程中提供了灵活性和间接性,使得某些操作和代码结构变得更加困难。或无法实施。

以上是Go 中的指针如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板