Home  >  Article  >  Backend Development  >  How to print a structure as plain string with escaped characters in golang?

How to print a structure as plain string with escaped characters in golang?

WBOY
WBOYforward
2024-02-09 10:10:29617browse

How to print a structure as plain string with escaped characters in golang?

In Golang, printing a structure as a plain string with escaped characters is a common requirement. This can be achieved by using the Sprint function from the fmt package. The Sprint function converts the structure into a string and automatically escapes the special characters in it. By using the %#v placeholder, you can ensure that escaped characters are included in the printed string. Here is a simple example code showing how to print a struct as a plain string with escaped characters: ```go package main import ( "fmt" ) type Person struct { Name string Age int } func main() { p := Person{ Name: "John", Age: 30, } str := fmt.Sprintf("%#v", p) fmt.Println(str) } ``` In the above code, we define a Person structure and create an instance p. Then, use the fmt.Sprintf function to convert p to a plain string with escaped characters. Finally, use the fmt.Println function to print the string. Run the code, and the output result is `main.Person{Name:"John", Age:30}`, in which double quotes and backslashes represent escape characters. In this way, we successfully printed the structure as a plain string with escaped characters.

Question content

I'm trying to print a golang structure as a string with escaped characters, but can't do it.

I want to print my structure like this:

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

This is what I tried.

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

}

But it prints like this.

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

Can someone help me get the following output? :

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

Solution

To quote any string you can use strconv.quote(): p>

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

fmt There is also a verb in the package for quoting strings: %q:

String and byte slices (processed equivalently with these verbs):

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

So you can also print like this:

fmt.printf("mystruct: %q", string(r))

Since this also works with byte slices, you don't even need a string conversion:

fmt.printf("mystruct: %q", r)

All these outputs (try it on go playground):

MyStruct: "{\"data\":\"Name\",\"value\":\"Ashutosh\"}"

The above is the detailed content of How to print a structure as plain string with escaped characters in golang?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete