Maison  >  Article  >  développement back-end  >  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
WBOYavant
2024-02-09 10:10:29619parcourir

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))

}

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() p>Solution de contournement

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

fmt.println("mystruct:", strconv.quote(string(r)))

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

Vous pouvez donc aussi imprimer comme ceci :

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

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

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer