Maison > développement back-end > Golang > Comment imprimer une structure sous forme de chaîne simple avec des caractères échappés en golang ?

Comment imprimer une structure sous forme de chaîne simple avec des caractères échappés en golang ?

WBOY
Libérer: 2024-02-09 10:10:29
avant
664 Les gens l'ont consulté

Comment imprimer une structure sous forme de chaîne simple avec des caractères échappés en golang ?

En Golang, imprimer une structure sous forme de chaîne simple avec des caractères d'échappement est un besoin courant. Ceci peut être réalisé en utilisant la fonction Sprint du package fmt. La fonction Sprint convertit la structure en chaîne et échappe automatiquement les caractères spéciaux qu'elle contient. En utilisant l'espace réservé %#v, vous pouvez vous assurer que les caractères échappés sont inclus dans la chaîne imprimée. Voici un exemple de code simple montrant comment imprimer une structure sous forme de chaîne simple avec des caractères d'échappement : ``` va paquet principal importer ( "fmt" ) tapez Structure de personne { Chaîne de nom Âge entier } fonction main() { p := Personne{ Nom : "Jean", Âge : 30 ans, } str := fmt.Sprintf("%#v", p) fmt.Println(str) } ``` Dans le code ci-dessus, nous définissons une structure Person et créons une instance p. Ensuite, utilisez la fonction fmt.Sprintf pour convertir p en une chaîne simple avec des caractères d'échappement. Enfin, utilisez la fonction fmt.Println pour imprimer la chaîne. Exécutez le code et le résultat de sortie est `main.Person{Name:"John", Age:30}`, dans lequel les guillemets doubles et les barres obliques inverses représentent des caractères d'échappement. De cette façon, nous avons réussi à imprimer la structure sous forme de chaîne simple avec des caractères d'échappement.

Contenu de la question

J'essaie d'imprimer une structure golang sous forme de chaîne avec des caractères échappés mais je n'y parviens pas.

Je souhaite imprimer ma structure comme ceci :

"{"data":"myname","value":"ashutosh"}"

C'est ce que j'ai essayé.

package main

import (
    "encoding/json"
    "fmt"
)

type Resp struct {
    Data  string `json:"data"`
    Value string `json:"value"`
}

func main() {

    var data Resp
    data.Data = "Name"
    data.Value = "Ashutosh"

    r, _ := json.Marshal(data)
    fmt.Println("MyStruct: ", string(r))

}
Copier après la connexion

Mais ça s'imprime comme ça.

{"data":"名称","value":"ashutosh"}

Quelqu'un peut-il m'aider à obtenir le résultat suivant ? :

"{"data":"myname","value":"ashutosh"}"

解决方法

要引用任何字符串,您可以使用strconv.quote()Solution de contournement

Pour citer n'importe quelle chaîne, vous pouvez utiliser strconv.quote( )< /code><code>fmt 包中还有一个用于引用字符串的动词:%q

fmt.println("mystruct:", strconv.quote(string(r)))
Copier après la connexion

fmt

Il y a aussi un verbe dans le package pour citer des chaînes : %q:

String et byte slices (traitement équivalent avec ces verbes) : string

%q    a double-quoted string safely escaped with go syntax
Copier après la connexion

Vous pouvez donc aussi imprimer comme ceci :

fmt.printf("mystruct: %q", string(r))
Copier après la connexion
Comme cela fonctionne également avec les tranches d'octets, vous n'avez même pas besoin de la conversion  :

fmt.printf("mystruct: %q", r)
Copier après la connexion
🎜Ce sont toutes les sorties (essayez-le sur le 🎜go Playground🎜) : 🎜
MyStruct: "{\"data\":\"Name\",\"value\":\"Ashutosh\"}"
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal