go - [][]*数据类型在golang中是什么意思

标签 go

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

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 个空节点指针 slice ,这是您的代码的预期行为。

它是一片片的节点指针。

这里是对您的代码的一个简单修改,以向您展示如果您向 slice 添加节点,它是如何工作的:

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)
}

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

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

自己试试here

关于go - [][]*数据类型在golang中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52422349/

相关文章:

Go - append 到结构上的 slice 不会持续存在

reflection - 如何将接口(interface){}转换为其基础类型

go - net/http 忽略系统代理设置

go - 去http.FileServer流错误的文件

去安装但无法从 bin 以外的文件夹运行应用程序

go - http 传输代理功能

go - vim-go 完成更新后停止工作

go - Go如何安全存储?

go - 在 go 中测试连接到 db 的处理程序

json.Marshal(struct) 返回 "{}"