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.
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\"}"
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!