How to convert a map to a slice of entries?

Issue

I’m trying to convert key-value map to slice of pairs, for example given a map like:

m := make(map[int64]int64)
m[521] = 4
m[528] = 8

How do I convert that into a slice of its entries, like: [[521, 4], [528, 8]]

I’m thinking about ranging over all those key-values then create slice for that, but is there any simple code to do that?

Solution

package main

import "fmt"

func main() {
    //create a map
    m := map[int64]int64{512: 8, 513: 9, 234: 9, 392: 0}

    //create a slice to hold required values
    s := make([][]int64, 0)

    //range over map `m` to append to slice `s`
    for k, v := range m {

        // append each element, with a new slice []int64{k, v}
        s = append(s, []int64{k, v})
    }

    fmt.Println(s)
}

Answered By – nilsocket

Answer Checked By – Clifford M. (GoLangFix Volunteer)

Leave a Reply

Your email address will not be published.