登录
首页 >  Golang >  Go问答

在golang中,指针类型*datatype的含义是什么?

来源:stackoverflow

时间:2024-03-15 16:51:34 177浏览 收藏

在 Go 语言中,“指针类型 *datatype”表示指向该数据类型变量的指针。例如,`*node` 表示指向 `node` 类型变量的指针。 `[][]*node` 表示一个二维数组,其元素是 `*node` 类型的指针。换句话说,它是节点指针的切片切片。在你的示例代码中,`routingtable` 是一个包含 4 个空切片的切片,每个空切片都指向一个 `*node` 类型的指针。

问题内容

假设这是我的示例代码。运行时输出 [[]][[] []][[] [] []][[] [] [] []]。帮助我理解这段代码所描述的内容以及编程术语中所谓的路由表 [][]*node 。它是节点切片的切片还是节点类型的二维数组。如果我听起来很愚蠢,请原谅我,但我只是想学习。

package main

import "fmt"

type node struct {
    id int
}

func main() {
    var routingtable [][]*node

    for i := 0; i < 4; i++ {
        routingtable = append(routingtable, []*node{})
        fmt.Print(routingtable)
    }
}

解决方案


它只是意味着它包含 4 个空节点指针切片,这是代码的预期行为。

它是节点指针切片的切片。

以下是对代码的简单修改,以向您展示向切片添加节点时它的工作原理:

package main

import "fmt"

type node struct {
    id int
}

func main() {
    var routingtable [][]*node
    for i := 0; i < 4; i++ {
        routingtable = append(routingtable, []*node{&node{id: i}})
    }
    fmt.print(routingtable)
}

将输出节点指针切片的切片,其中包含一个节点,每个节点具有不同的地址:

[[0x10414020] [0x10414024] [0x10414028] [0x1041402c]]

自己尝试一下here

到这里,我们也就讲完了《在golang中,指针类型*datatype的含义是什么?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>