Accès à la réponse HTTP sous forme de chaîne dans Go
Lors de l'analyse de la réponse d'une requête Web, y accéder sous forme de chaîne peut être problématique. Considérez le code suivant :
resp, err := http.Get("http://google.hu/") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body)
Pendant que le code récupère avec succès le corps de la réponse, essayez de le parcourir sous forme de chaîne en utilisant for i:= 0; je &Lt ; lentille(corps); i { fmt.Println( body[i] ) } renvoie des valeurs numériques au lieu de caractères.
La clé pour accéder à la réponse sous forme de chaîne réside dans une simple conversion :
bs := string(body)
Ceci La conversion traite le corps de la tranche d'octets comme une séquence de points de code Unicode et crée une chaîne correspondante. Une fois converti, vous pouvez manipuler bs comme n'importe quelle autre chaîne.
Par exemple, le code suivant démontre la conversion et la manipulation de chaîne ultérieure :
var client http.Client resp, err := client.Get(url) if err != nil { log.Fatal(err) } defer resp.Body.Close() if resp.StatusCode == http.StatusOK { bodyBytes, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } bodyString := string(bodyBytes) fmt.Println(bodyString) }
Cette conversion met en évidence la distinction entre les octets et les chaînes en Aller. Les chaînes sont des séquences immuables de points de code Unicode, tandis que les tranches d'octets sont des séquences mutables d'octets bruts. La conversion d'une tranche d'octets en chaîne crée effectivement une nouvelle chaîne qui représente la séquence de caractères codée par les octets.
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!