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

Suppose this is my sample code. On running it outputs [[]][[] []][[] [] []][[] [] [] []]. Help me in understanding what this code is depicting and what is routingtable [][]*node called in programming terminology. Is it a slice of slice of node or is it a 2d array of node type. Forgive me if I sound dumb but I am just trying to learn.

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

It simply means it contains 4 empty node pointer slices, which is the expected behavior from your code.

It is a slice of slices of node pointers.

Here is a simple modification of your code to show you how it works if you add nodes to your slices:

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

Will output the slice of slices of node pointers, containing one node each with a different address:

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

Try it yourself here