首頁 >後端開發 >Golang >如何在golang中將結構列印為帶有轉義字元的純字串?

如何在golang中將結構列印為帶有轉義字元的純字串?

WBOY
WBOY轉載
2024-02-09 10:10:29662瀏覽

如何在golang中將結構列印為帶有轉義字元的純字串?

在Golang中,將結構體印為帶有轉義字元的純字串是一種常見的需求。這可以透過使用fmt套件中的Sprint函數來實現。 Sprint函數將結構體轉換為字串,並自動對其中的特殊字元進行轉義處理。透過使用%#v佔位符,可以確保列印的字串中包含轉義字元。以下是一個簡單的範例程式碼,展示如何將結構體列印為帶有轉義字元的純字串: ```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) } ``` 在上述程式碼中,我們定義了一個Person結構體,並建立了一個實例p。然後,使用fmt.Sprintf函數將p轉換為帶有轉義字元的純字串。最後,使用fmt.Println函數將該字串列印出來。執行程式碼,輸出結果為`main.Person{Name:"John", Age:30}`,其中的雙引號和反斜線就是轉義字元的表示。這樣,我們就成功地將結構體印成帶有轉義字元的純字串了。

問題內容

我試圖將 golang 結構列印為帶有轉義字元的字串,但無法做到這一點。

我想像這樣印我的結構:

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

這是我嘗試過的。

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

}

但它是這樣印出來的。

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

#有人可以幫我得到以下輸出嗎? :

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

解決方法

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

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

fmt 套件中還有一個用來引用字串的動詞:%q:

字串和位元組切片(與這些動詞等效處理):

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

所以你也可以這樣印:

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

由於這也適用於位元組切片,因此您甚至不需要 string 轉換:

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

這些所有輸出(在 go playground 上嘗試):

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

以上是如何在golang中將結構列印為帶有轉義字元的純字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除