Maison > Article > développement back-end > Pourquoi les tranches Go ne peuvent-elles pas être utilisées comme clés de carte ?
Limitations de l'utilisation des tranches Go comme clés de carte
Les tranches Go, qui sont essentiellement des implémentations de tableaux Go, partagent des similitudes avec les tableaux en termes de leur nature de type valeur. Cependant, leur pertinence en tant que clés de mappage diffère considérablement de celle des tableaux. Cette distinction vient du fait que les tranches font référence à des tableaux sous-jacents, ce qui introduit des complexités qui ne sont pas présentes avec les tableaux.
Comme l'explique Nigel Tao, copier une tranche est nettement plus rapide que copier un tableau, grâce à son O(1 ) complexité temporelle par rapport à la complexité O (longueur) des tableaux. Cette différence met en évidence la distinction entre les types valeur (tableaux) et les types référence (tranches).
Lors de la définition des clés de mappage, il devient nécessaire d'établir une notion d'égalité. Pour les tableaux, l’égalité est directement déterminée en comparant les éléments individuels. Cependant, pour les tranches, il existe plusieurs façons de définir l’égalité. Envisagez l'égalité par élément ou l'égalité en fonction du stockage de tableau sous-jacent auquel ils font référence.
De plus, le fait d'insérer une clé dans une carte crée une incertitude quant à la nécessité d'une copie coûteuse de l'intégralité du tableau de sauvegarde. Bien que la copie puisse correspondre aux attentes, elle s'écarterait du comportement d'affectation des tranches.
Pour illustrer ces complexités, considérons l'exemple suivant :
m := make(map[[]int]bool) s0 := []int{6, 7, 8} s1 := []int{6, 7, 8} s2 := s0 m[s0] = true s2[0] = 9 println(m[s0]) println(m[s1]) println(m[s2])
Les différentes attentes que les programmeurs peuvent avoir à propos du Les résultats démontrent le potentiel de confusion qui survient lors de l’utilisation de tranches comme clés de carte. Pour éviter de telles ambiguïtés, le choix a été fait d'interdire l'utilisation de tranches comme clés de carte dans Go.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!