Conversion d'une rune en chaîne dans Golang
Vous avez un souci concernant la conversion d'une rune en chaîne et son impression, rencontrant des caractères non définis. Examinons le problème et trouvons une solution.
Tout d'abord, dans votre code d'origine, vous avez utilisé Scanner.Scan() pour lire une rune. Cependant, cette méthode est conçue pour gérer les jetons ou les runes avec des valeurs de jeton spéciales, et non la rune lue elle-même.
Pour lire une seule rune, vous devez plutôt utiliser Scanner.Next() :
c := b.Next() fmt.Println(c, string(c), strconv.QuoteRune(c))
Ce code lira et imprimera désormais correctement la rune sous forme d'entier, sa représentation de caractère et sa version citée.
Alternativement, si vous le souhaitez pour convertir simplement une rune en chaîne, vous pouvez utiliser une conversion de type simple. Rune est un alias pour int32, et la conversion de nombres entiers en chaînes génère leur représentation UTF-8.
r := rune('a') fmt.Println(r, string(r))
Pour parcourir les runes d'une chaîne, vous pouvez utiliser une boucle de plage for... :
for i, r := range "abc" { fmt.Printf("%d - %c (%v)\n", i, r, r) }
Vous pouvez également convertir une chaîne en tranche de runes en utilisant []rune("abc").
Une autre option consiste à utiliser utf8.DecodeRuneInString().
Dans votre code d'origine utilisant Scanner.Scan(), vous avez configuré par inadvertance le mode du scanner pour gérer les jetons Go, qui incluent des identifiants tels que « a ». L'appel de Scan() a ensuite renvoyé scanner.Ident et imprimé le texte de l'identifiant, ce qui a donné les caractères non définis.
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!