"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment convertir efficacement des chaînes UTF-8 en tableaux d'octets dans Go ?

Comment convertir efficacement des chaînes UTF-8 en tableaux d'octets dans Go ?

Publié le 2024-11-08
Parcourir:520

How to Efficiently Convert UTF-8 Strings to Byte Arrays in Go?

Conversion de chaînes UTF-8 en tableaux d'octets

La démarshallisation de JSON nécessite une entrée de tranche d'octets, tandis que les chaînes sont stockées au format UTF-8 dans Go . Cet article explore la conversion efficace des chaînes UTF-8 en tableaux d'octets.

Conversion directe

Go permet de convertir des chaînes en tranches d'octets, créant ainsi une copie des octets de la chaîne. :

s := "some text"
b := []byte(s)

Cependant, pour les grandes chaînes, cette approche est inefficace en raison de la copie.

Utilisation de io.Reader

Une alternative efficace consiste à utiliser strings.NewReader() pour créer un io.Reader qui lit la chaîne sans copier :

s := `{ "somekey": "somevalue" }`

var result interface{}
err := json.NewDecoder(strings.NewReader(s)).Decode(&result)

Cette approche évite de copier la chaîne.

Petits textes JSON

Pour les petits textes JSON, la conversion directe reste une option rapide :

s := `{ "somekey": "somevalue" }`

var result interface{}
err := json.Unmarshal([]byte(s), &result)

Remarque : Lors de la lecture de JSON à partir d'un io.Reader (par exemple, un fichier ou un réseau), transmettez le io. Lecteur directement vers json.NewDecoder() sans lecture de chaîne intermédiaire.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3