Heim  >  Artikel  >  Backend-Entwicklung  >  Wie drucke ich eine Struktur als einfache Zeichenfolge mit Escapezeichen in Golang?

Wie drucke ich eine Struktur als einfache Zeichenfolge mit Escapezeichen in Golang?

WBOY
WBOYnach vorne
2024-02-09 10:10:29617Durchsuche

Wie drucke ich eine Struktur als einfache Zeichenfolge mit Escapezeichen in Golang?

In Golang ist das Drucken einer Struktur als einfache Zeichenfolge mit Escapezeichen ein häufiger Bedarf. Dies kann durch die Verwendung der Sprint-Funktion aus dem fmt-Paket erreicht werden. Die Sprint-Funktion wandelt die Struktur in einen String um und maskiert die darin enthaltenen Sonderzeichen automatisch. Durch die Verwendung des %#v-Platzhalters können Sie sicherstellen, dass Escape-Zeichen in der gedruckten Zeichenfolge enthalten sind. Hier ist ein einfacher Beispielcode, der zeigt, wie eine Struktur als einfache Zeichenfolge mit Escapezeichen gedruckt wird: „Geh Paket main importieren ( „fmt“ ) Typ Personenstruktur { Namenszeichenfolge Alter int } func main() { p := Person{ Name: „John“, Alter: 30, } str := fmt.Sprintf("%#v", p) fmt.Println(str) } „ Im obigen Code definieren wir eine Personenstruktur und erstellen eine Instanz p. Verwenden Sie dann die Funktion fmt.Sprintf, um p in eine einfache Zeichenfolge mit Escapezeichen umzuwandeln. Verwenden Sie abschließend die Funktion fmt.Println, um die Zeichenfolge zu drucken. Führen Sie den Code aus und das Ausgabeergebnis ist „main.Person{Name:"John", Age:30}“, wobei doppelte Anführungszeichen und Backslashes Escape-Zeichen darstellen. Auf diese Weise haben wir die Struktur erfolgreich als einfache Zeichenfolge mit Escapezeichen gedruckt.

Frageninhalt

Ich versuche, eine Golang-Struktur als Zeichenfolge mit Escape-Zeichen zu drucken, schaffe es aber nicht.

Ich möchte meine Struktur so ausdrucken:

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

Das habe ich versucht.

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

}

Aber es wird so gedruckt.

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

Kann mir jemand helfen, die folgende Ausgabe zu erhalten? :

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

解决方法

要引用任何字符串,您可以使用strconv.quote() p>Problemumgehung

Um eine beliebige Zeichenfolge in Anführungszeichen zu setzen, können Sie strconv.quote( )<code>fmt 包中还有一个用于引用字符串的动词:%q:

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

fmt

Im Paket gibt es auch ein Verb zum Zitieren von Zeichenfolgen: %q:

String- und Byte-Slices (äquivalente Verarbeitung mit diesen Verben): string

%q    a double-quoted string safely escaped with go syntax

Du kannst also auch so drucken:

fmt.printf("mystruct: %q", string(r))
Da dies auch mit Byte-Slices funktioniert, benötigen Sie nicht einmal die -Konvertierung:

fmt.printf("mystruct: %q", r)
🎜Das sind alles Ausgänge (versuchen Sie es auf dem 🎜go-Spielplatz🎜): 🎜
MyStruct: "{\"data\":\"Name\",\"value\":\"Ashutosh\"}"

Das obige ist der detaillierte Inhalt vonWie drucke ich eine Struktur als einfache Zeichenfolge mit Escapezeichen in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen