首頁 > 後端開發 > Golang > 主體

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

WBOY
發布: 2024-02-09 10:10:29
轉載
617 人瀏覽過

如何在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()

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!