在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中文網其他相關文章!