Maison > développement back-end > Golang > Comment convertir une Go Slice en tableau ?

Comment convertir une Go Slice en tableau ?

Linda Hamilton
Libérer: 2024-12-11 12:43:11
original
478 Les gens l'ont consulté

How to Convert a Go Slice to an Array?

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
}
Copier après la connexion

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
Copier après la connexion

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])
Copier après la connexion

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
}
Copier après la connexion

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}}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal