Comment obtenir une sortie "E" au lieu de 69 ?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
Est-ce que Golang a une fonction pour convertir un char en byte et vice versa ?
Comment obtenir une sortie "E" au lieu de 69 ?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
Est-ce que Golang a une fonction pour convertir un char en byte et vice versa ?
Les chaînes de caractères interprétées sont des séquences de caractères entre guillemets doubles "" utilisant l'encodage UTF-8 (éventuellement sur plusieurs octets) des caractères individuels. En UTF-8, les caractères ASCII sont sur un seul octet correspondant aux 128 premiers caractères Unicode. Les chaînes de caractères se comportent comme des tranches d'octets. Une rune est une valeur entière identifiant un point de code Unicode. Par conséquent,
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1])) // ASCII only
fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
}
Sortie :
e
e
界
Lisez :
Spécification du langage de programmation Go section sur Conversions .
Et si ce ?
fmt.Printf("%c","HELLO"[1])
Comme Peter le fait remarquer, pour permettre plus qu'un simple ASCII :
fmt.Printf("%c", []rune("HELLO")[1])
Go n'a pas vraiment de type de caractère en tant que tel. byte est souvent utilisé pour les caractères ASCII, et rune est utilisé pour les caractères Unicode, mais ils ne sont tous deux que des alias pour les types entiers (uint8 et int32). Donc si vous voulez les forcer à être imprimés comme des caractères au lieu de nombres, vous devez utiliser Printf("%c", x)
. Le site %c
La spécification du format fonctionne pour tout type d'entier.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.