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
}
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.
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