Golang中[] [] *数据类型是什么意思

时间:2018-09-20 09:54:48

标签: go

假设这是我的示例代码。运行时将输出[[]][[] []][[] [] []][[] [] [] []]。帮助我理解此代码描述的内容以及编程术语中调用的routingtable [] [] *节点。它是节点切片的一部分还是节点类型的二维数组。如果我听起来很笨,请原谅我,但我只是想学习。

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

1 个答案:

答案 0 :(得分:0)

这只是意味着它包含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