Maison >développement back-end >Golang >Comment convertir une Go Slice en tableau sans copier ?
Lorsque vous travaillez avec des tranches et des tableaux dans Go, il peut être nécessaire d'effectuer une conversion entre les deux types. Un scénario courant consiste à convertir une tranche en tableau sans en faire de copie. Ceci peut être réalisé en utilisant plusieurs méthodes différentes.
La fonction de copie vous permet de copier des éléments d'une tranche à une autre. Cependant, il ne peut copier qu'entre tranches, pas entre tranches et tableaux. Pour contourner ce problème, vous pouvez utiliser une astuce :
varLead := Lead{} copy(varLead.Magic[:], someSlice[0:4])
Dans ce code, varLead.Magic est un tableau de taille 4, tandis que someSlice est une tranche. En utilisant la syntaxe [:] sur varLead.Magic, nous créons un en-tête de tranche qui pointe vers le tableau sous-jacent. La fonction de copie copie ensuite les éléments de someSlice[0:4] dans cet en-tête de tranche, le convertissant ainsi en tableau sans faire de copie.
Une autre option consiste à utilisez une boucle for pour copier manuellement les éléments de la tranche vers le tableau :
for index, b := range someSlice { varLead.Magic[index] = b }
Ce code parcourt les éléments de someSlice et attribue chaque élément à l'index correspondant dans varLead.Magic. C'est un moyen simple et direct de convertir une tranche en tableau sans en faire une copie.
Enfin, vous pouvez également utiliser des littéraux pour créer un tableau à partir d'une tranche :
varLead.Magic = [4]byte{someSlice[0], someSlice[1], someSlice[2], someSlice[3]}
Ce code crée explicitement un tableau de taille 4 et lui attribue les quatre premiers éléments de someSlice. C'est le moyen le plus compact et le plus lisible de convertir une tranche en tableau, mais cela peut devenir fastidieux si le tableau comporte un grand nombre d'éléments.
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!