Conversion d'une tranche en tableau dans Go
Dans Go, tenter d'attribuer directement une tranche à un tableau entraînera une erreur de compilation. Cette question explore comment convertir des tranches de longueurs spécifiques en tableaux.
Énoncé du problème
Considérons une structure définissant un bloc principal avec un champ Magic composé d'un tableau de 4 octets :
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 }
La tâche consiste à attribuer une tranche de 4 octets au champ Magic en utilisant ce qui suit syntaxe :
lead := Lead{} lead.Magic = buffer[0:4] // Attempt to assign slice to array
Solution
Pour convertir une tranche d'une longueur spécifiée en tableau, Go propose les méthodes suivantes :
Utilisation de copy() avec Array Subslice
Le module intégré La fonction copie peut être amenée à copier une tranche dans un tableau en traitant le tableau comme une tranche :
copy(varLead.Magic[:], someSlice[0:4])
Utilisation de la boucle For
Parcourez les éléments de tranche et attribuez-les aux éléments du tableau :
for index, b := range someSlice { varLead.Magic[index] = b }
Utilisation d'un tableau Littéraux
Une approche alternative consiste à utiliser directement les littéraux de tableau :
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 } lead := Lead{Magic: [4]byte{0x12, 0x34, 0x56, 0x78}}
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!