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

WBOY
Release: 2024-02-09 10:10:29
forward
620 people have browsed it

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

}
Copy after login

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

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

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
Copy after login

So you can also print like this:

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

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

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

All these outputs (try it on go playground):

MyStruct: "{\"data\":\"Name\",\"value\":\"Ashutosh\"}"
Copy after login

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!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!