Maison > développement back-end > Golang > Pourquoi l'ajout de tableaux de tranches d'octets dans Go produit-il des erreurs inattendues ?

Pourquoi l'ajout de tableaux de tranches d'octets dans Go produit-il des erreurs inattendues ?

Susan Sarandon
Libérer: 2024-12-03 00:03:16
original
141 Les gens l'ont consulté

Why Does Appending Byte Slice Arrays in Go Produce Unexpected Errors?

Ajout de tableaux de tranches de deux octets dans Go : comprendre les erreurs inattendues de l'ajout

Lorsque vous essayez d'ajouter des tranches de tableau de deux octets dans Go, il est possible de rencontrer des erreurs liées à des données incompatibles genres. Dans le code fourni, le problème survient lorsque vous essayez d'utiliser []byte comme argument pour la fonction variadique append().

La spécification du langage de programmation Go définit la syntaxe de append() comme :

append(s S, x ...T) S  // T is the element type of S
Copier après la connexion

Ici, s est la tranche à laquelle les éléments sont ajoutés, et x est la liste variadique des éléments à ajouter. Le type de T doit correspondre au type d'élément de S.

Dans l'exemple de code, un et deux sont tous deux des tranches de tableau d'octets, leur type d'élément est donc []byte. Cependant, l'argument final two[:] n'est pas suivi de ..., ce qui signifie que Go tente de le traiter comme une valeur []byte unique au lieu d'une tranche. Cela entraîne l'erreur :

cannot use two[:] (type []uint8) as type uint8 in append
Copier après la connexion

Pour résoudre cette erreur, vous devez utiliser ... après l'argument final de la tranche pour indiquer qu'il s'agit d'une tranche variadique. Le code corrigé est :

package main

import "fmt"

func main() {
    one := make([]byte, 2)
    two := make([]byte, 2)
    ...
    fmt.Println(append(one[:], two[:]...))
    ...
}
Copier après la connexion

En suivant cette syntaxe, Go ajoutera correctement les éléments de deux[:] en un seul[:].

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