Go – Runtime error: assignment to entry in nil map


I am trying to generate a map and then convert that to a yaml file like this:

uid :
        cn: Chaithra
        street: fkmp
        cn: Chaithra
        street: fkmp
        cn: Chaithra
        street: fkmp

I think I am missing something important while creating the map. My code is below.

package main

import (

type T struct {
    cn     string
    street string

func main() {
    names := []string{"kasi", "remya", "nandan"}

    m := make(map[string]map[string]T, len(names))
    for _, name := range names {

        //t := T{cn: "Chaithra", street: "fkmp"}

        m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}


    y, _ := yaml.Marshal(&m)

    //fmt.Println(m, names)

It is giving the following error:

panic: runtime error: assignment to entry in nil map

Best Answer

You have not initialized your inner map. Before your for loop you can add m["uid"] = make(map[string]T) and then assign the name.