Esta es una vieja pregunta, pero aquí están mis dos centavos. La respuesta de PeterSO es un poco más concisa, pero un poco menos eficiente. Ya sabes lo grande que será, así que ni siquiera necesitas usar append:
keys := make([]int, len(mymap))
i := 0
for k := range mymap {
keys[i] = k
i++
}
En la mayoría de las situaciones, probablemente no hará mucha diferencia, pero no es mucho más trabajo, y en mis pruebas (usando un mapa con 1,000,000 int64
claves aleatorias y luego generando la matriz de claves diez veces con cada método), se trataba de 20% más rápido para asignar miembros de la matriz directamente que para usar append.
Si bien establecer la capacidad elimina las reasignaciones, append todavía tiene que hacer un trabajo adicional para verificar si ha alcanzado la capacidad en cada anexo.