"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment la suppression des éléments du début d'une tranche de go affecte-t-elle sa capacité?

Comment la suppression des éléments du début d'une tranche de go affecte-t-elle sa capacité?

Publié le 2025-02-06
Parcourir:138

How Does Dropping Elements from the Beginning of a Go Slice Affect Its Capacity?

Comprendre les changements de capacité de tranche dans go

Lorsque vous travaillez avec des tranches Go, il est essentiel de comprendre leurs propriétés sous-jacentes, y compris leur capacité. Bien que la suppression des N derniers éléments à partir d'une tranche maintient sa capacité, la suppression des Niés Niés affecte la capacité.

La structure de la tranche go

Les tranches de go sont implémentées sous forme de structures composé de trois champs:

type slice struct {
    array unsafe.Pointer
    len   int
    cap   int
}
  • array: pointeur vers le tableau sous-jacent en arrière la tranche.
  • len: nombre d'éléments dans la tranche.
  • cap: capacité de la tranche, qui représente le nombre d'éléments qu'il peut tenir. : Len (S) -N], nous créons une nouvelle tranche qui partage le même tableau sous-jacent que l'original. Cependant, la longueur de la nouvelle tranche est réduite, tandis que la capacité reste inchangée. En effet Une tranche, en utilisant l'expression s [n:], nous créons non seulement une nouvelle tranche avec une longueur plus courte, mais allons également un nouveau tableau sous-jacent. La capacité de la nouvelle tranche est ajustée pour s'adapter au nombre réduit d'éléments.

Exemple

Considérez le code suivant:

func principal() { S: = [] int {2, 3, 5, 7, 11, 13} Printlice (s) // dépose ses deux dernières valeurs S = s [: len (s) -2] Printlice (s) // dépose ses deux premières valeurs S = S [2:] Printlice (s) } La sortie montre les changements de longueur, de capacité et du pointeur du tableau sous-jacent lorsque nous manipulons la tranche:

ptr = 0x450000 len = 6 cap = 6 [2 3 5 7 11 13 ]] PTR = 0x450000 len = 4 Cap = 6 [2 3 5 7] ptr = 0x450008 len = 2 cap = 4 [5 7]

Conclusion

Comprendre la structure interne des tranches de go est cruciale pour les manipuler efficacement. En reconnaissant que la suppression des N ces derniers éléments affecte la capacité différemment de la suppression des Niés Niés, les développeurs peuvent optimiser leur code et éviter les problèmes de performances potentielles liées à la redimension des tranches.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3