Comprendre pourquoi copy() ne parvient pas à dupliquer les tranches vides
Dans Go, la fonction copy() est destinée à copier des éléments entre deux tranches , ce qui permet un chevauchement potentiel dans le processus. Cependant, lorsque vous tentez de copier une tranche vide, un comportement inattendu peut survenir.
La racine du problème :
La documentation indique que copy() copie les éléments d'un tranche source dans une tranche de destination, renvoyant le nombre d’éléments copiés. Ce nombre est essentiellement déterminé par la longueur minimale des tranches source et de destination, comme spécifié dans la spécification du langage Go.
Problème de tranche de destination vide :
Lorsque le la tranche de destination est vide (c'est-à-dire len(dst) == 0), la longueur minimale devient nulle, ce qui entraîne la copie d'aucun élément. C'est pourquoi dans votre exemple, copy() n'a pas réussi à remplir votre tranche tmp.
Solution :
Pour contourner ce problème et réussir à copier une tranche vide, vous devez initialisez d’abord la tranche de destination avec une capacité suffisante. Ceci peut être réalisé en utilisant make([]int, len(arr)).
Documentation mise à jour :
La documentation de copy() a été mise à jour pour indiquer explicitement que le minimum des longueurs de tranche source et destination est copié. Cette clarification corrige l'écart rencontré lors de la tentative de duplication de tranches vides.
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!