¿Cómo copiar un mapa?

Estoy tratando de copiar el contenido de un mapa (amap ) dentro de otro (aSuperMap) y luego borraramap para que pueda tomar nuevos valores en la próxima iteración / ciclo. El problema es que no puedes borrar el mapasin borrar su referencia en el supermapa también. Aquí hay un pseudocódigo.

for something := range fruits{
        aMap := make(map[string]aStruct)
        aSuperMap := make(map[string]map[string]aStruct)

        for x := range something{
            aMap[x] = aData
            aSuperMap[y] = aMap
            delete(aMap, x)
    }
//save aSuperMap
  saveASuperMap(something)

}

También probé algunas cosas dinámicas, pero obviamente arroja un error (no se puede asignar a cero)

aSuperMap[y][x] = aData

La pregunta es ¿cómo puedo crear un mapa asociativo? En PHP simplemente uso aSuperMap [y] [x] = aData. Parece que Golang no tiene ningún método obvio. Si eliminodelete(aMap, x) su referencia del súper mapa también se elimina. Si no lo elimino, el supermapa termina con datos duplicados. Básicamente en cada bucle se poneaMap con el nuevo valor más todos los viejos valores.

Respuestas a la pregunta(4)

Su respuesta a la pregunta