Maison  >  Article  >  développement back-end  >  structure golang 转[]octet

structure golang 转[]octet

王林
王林original
2023-05-13 09:30:36829parcourir

Golang est un langage de programmation efficace largement utilisé dans le développement Web, le cloud computing, la science des données, l'intelligence artificielle et d'autres domaines. Parmi eux, le type struct de Golang est un type de données très couramment utilisé. Nous avons souvent besoin de convertir un type structure en type []byte.

Afin de convertir la structure Golang en []byte, nous devons comprendre les problèmes suivants :

  1. Définition du type de structure dans Golang
  2. Définition et utilisation du type []byte dans Golang
  3. Conversion du type de structure dans Golang to [] Implémentation du type d'octet

Définition du type struct dans Golang

Dans Golang, le type struct est un type de données composite utilisé pour organiser différents types de données membres. Le type de structure contient différentes variables membres dans l'ordre. Ces variables membres peuvent être des variables de n'importe quel type, telles que int, string, bool, nombres à virgule flottante et autres variables de type structure. La définition d'un type de structure ressemble généralement à ceci :

type Person struct {
    Name    string
    Age     int
    Address string
}

Dans le code ci-dessus, nous définissons un type de structure nommé Personne, qui contient trois variables membres : Nom, Âge et Adresse.

Définition et utilisation du type []byte dans Golang

[]byte type est un type intégré dans Golang, utilisé pour représenter des données binaires. Dans Golang, le type []byte est en fait un alias du type uint8, qui représente une séquence d'entiers non signés de 8 bits. Étant donné que le type []byte est un type slice, il peut croître et diminuer de manière dynamique, ce qui le rend idéal pour représenter des tableaux d'octets de longueur variable.

Dans Golang, nous pouvons créer une variable de type []byte comme suit :

var data []byte

Ou utiliser la fonction make pour créer une variable de type []byte d'une taille spécifiée :

data := make([]byte, 1024)

Le type de structure dans Golang est converti en [ ] Implémentation du type byte

Dans Golang, si le type de structure Person est défini, nous pouvons facilement convertir les instances de type Person en []byte type :

p := Person {
    Name: "Tom",
    Age:  18,
    Address: "Beijing",
}
data, err := json.Marshal(p)

Dans le code ci-dessus, nous utilisons la fonction json.Marshal() qui convertit un instance p de type Person en données de type []byte.

De même, nous pouvons également utiliser le package encoding/binary pour convertir une structure en type []byte dans le flux binaire :

import (
    "bytes"
    "encoding/binary"
)

func Struct2Bytes(s interface{}) ([]byte, error) {
    buf := new(bytes.Buffer)
    err := binary.Write(buf, binary.LittleEndian, s)
    if err != nil {
        return nil, err
    }
    return buf.Bytes(), nil
}

Dans le code ci-dessus, nous utilisons la fonction Write du package encoding/binary pour convertir le structure Le type de corps s est converti en type []byte dans le flux binaire.

Résumé

Dans cet article, nous avons discuté de la définition du type struct dans Golang et de la manière de convertir le type de structure en type []byte. Lors de la mise en œuvre de la conversion de type de structure, nous pouvons utiliser le format JSON ou de flux binaire pour la sérialisation. Grâce à une compréhension approfondie du type struct et du type []byte dans Golang, nous pouvons utiliser Golang plus efficacement pour implémenter diverses applications et systèmes.

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
Article précédent:golang json转yamlArticle suivant:golang json转yaml