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
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
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[:]...)) ... }
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!