Avatar ·

Comment obtenir une slice des clés d'une map en Go : guide complet

Bonjour à tous ! J'ai récemment commencé à apprendre Go et j'ai rencontré un problème qui semble élémentaire, mais je ne trouve pas de solution élégante.

J'ai une map avec des données utilisateurs :

users := map[int]string{
    1: "Alice",
    2: "Bob",
    3: "Charlie",
    4: "Diana",
}

J'ai besoin d'obtenir la liste de tous les IDs utilisateurs (clés) sous forme d'une slice []int. En Python, j'écrirais simplement list(users.keys()), mais en Go, il n'y a pas de fonction aussi simple.

J'ai essayé de faire ceci :

var keys []int
for key := range users {
    keys = append(keys, key)
}

Cela fonctionne, mais je trouve cela trop verbeux. Existe-t-il une fonction intégrée ou une manière plus idiomatique ? Ce qui m'inquiète particulièrement :

  • L'ordre des clés — est-il toujours aléatoire ?
  • Comment gérer les grandes maps (des millions d'entrées) ?
  • Peut-on le faire en une seule ligne ?

Je serais reconnaissant pour des exemples