Maison  >  Article  >  développement back-end  >  Comment échapper à % dans Golang

Comment échapper à % dans Golang

PHPz
PHPzoriginal
2023-03-30 11:39:152115parcourir

Ces dernières années, avec le développement continu et la popularité de l'industrie Internet, les langages de programmation sont devenus de plus en plus importants. Parmi les nombreux langages de programmation, Golang est préféré par les développeurs pour ses avantages en termes de performances rapides, efficaces et sûres.

Bien que Golang ait des performances efficaces, il rencontre également divers problèmes et défis. L'un des problèmes courants concerne les caractères d'échappement dans Golang, en particulier le caractère d'échappement "%".

Dans Golang, si vous devez utiliser le caractère d'échappement "%", vous devez le répéter deux fois, c'est-à-dire "%%". En effet, dans Golang, le signe de pourcentage "%" lui-même est un caractère d'échappement. Par conséquent, lorsque Golang gère une chaîne contenant le signe de pourcentage « % », il la traitera comme une chaîne de format et analysera les paramètres qui la suivent comme des paramètres de format.

Par exemple, si vous devez imprimer la chaîne "10%" en Golang, vous devez l'écrire sous la forme "fmt.Printf("10%%")". Ici, le premier signe de pourcentage « % » représente le caractère d'échappement et le deuxième signe de pourcentage « % » représente le signe de pourcentage réel à afficher.

Si vous écrivez directement "fmt.Printf("10%")", Golang pensera que vous souhaitez formater la sortie et recherchera les paramètres suivants pour la sortie, donc des résultats erronés apparaîtront. En effet, Golang analysera les caractères après le signe de pourcentage "%" dans le cadre de la chaîne formatée, sans gérer correctement le signe de pourcentage lui-même.

Semblable à cette question, il existe une autre erreur courante : le problème du signe de pourcentage lors de l'encodage de l'URL. Dans les requêtes HTTP, le signe de pourcentage dans l'URL représente généralement un caractère d'échappement, convertissant certains caractères spéciaux ou octets en chaînes spécialement codées. Par exemple, %20 représente un espace et %3A représente deux points.

Dans Golang, vous rencontrez également des problèmes de pourcentage de signe lors de l'encodage d'URL. Si vous utilisez la propre fonction d'encodage d'URL de Golang pour l'encodage, vous devez également faire attention à échapper au signe de pourcentage. Par exemple, utilisez la fonction Encode dans "net/url" pour encoder une chaîne en Golang :

import "net/url"

encodeStr := url.QueryEscape("http://www.baidu.com/?query=测试&name=百度")
fmt.Println(encodeStr) // 输出:http%3A%2F%2Fwww.baidu.com%2F%3Fquery%3D%E6%B5%8B%E8%AF%95%26name%3D%E7%99%BE%E5%BA%A6

Vous pouvez voir que Golang échappe tous les caractères spéciaux dans les paramètres et utilise le signe pour cent pour les encoder.

Cependant, si vous souhaitez introduire des caractères d'échappement personnalisés, tels que le signe de pourcentage "%" mentionné précédemment, Golang provoquera des erreurs de décodage. Par exemple, le code suivant provoquera une erreur :

import "net/url"

encodeStr := url.QueryEscape("http://www.baidu.com/?query=测试&name=10%")
fmt.Println(encodeStr) // 输出:http%3A%2F%2Fwww.baidu.com%2F%3Fquery%3D%E6%B5%8B%E8%AF%95%26name%3D10

Vous pouvez voir que le "10%" dans le résultat de l'encodage n'est que "10", et des caractères seront perdus lors du décodage, entraînant une erreur dans le programme.

Pour cette situation, la solution est également très simple, il suffit de remplacer les caractères qui doivent être échappés par d'autres caractères. Par exemple, remplacez le signe de pourcentage "%" par "%25" (encodage URL du signe de pourcentage) :

import "net/url"
import "strings"

encodeStr := url.QueryEscape(strings.Replace("http://www.baidu.com/?query=测试&name=10%", "%", "%25", -1))
fmt.Println(encodeStr) // 输出:http%3A%2F%2Fwww.baidu.com%2F%3Fquery%3D%E6%B5%8B%E8%AF%95%26name%3D10%25

De cette façon, le résultat de l'encodage sera décodé correctement.

En général, le caractère d'échappement "%" dans Golang nécessite une attention particulière et doit être répété deux fois pour l'utiliser correctement. Lors du codage des URL, si vous devez utiliser des signes de pourcentage pour l'échappement, un traitement spécial est requis pour éviter les erreurs de décodage. Ce n'est qu'ainsi que nous pourrons exploiter pleinement les avantages de Golang, éviter les erreurs inattendues et rendre notre code plus robuste et efficace.

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!

Déclaration:
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