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

Comment convertir une Go Slice en tableau ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-11 12:43:11541parcourir

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
}

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!

Déclaration:
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