我正在嘗試學(xué)習(xí)Golang,在這樣做的同時(shí),我寫(xiě)了下面的代碼(更大的自學(xué)項(xiàng)目的一部分),并從陌生人那里進(jìn)行了代碼審查,其中一條評(píng)論是,“你可以直接將其編組到stdout,而不是編組到堆,然后轉(zhuǎn)換為字符串,然后將其流式傳輸?shù)絪tdout"我已經(jīng)瀏覽了編碼/ json包和io的文檔,但無(wú)法拼湊出所需的更改。任何指示或幫助都會(huì)很棒。 // Marshal the struct with proper tab indent so it can be readable b, err := json.MarshalIndent(res, "", " ") if err != nil { log.Fatal(errors.Wrap(err, "error marshaling response data")) } // Print the output to the stdout fmt.Fprint(os.Stdout, string(b))編輯我剛剛在文檔中找到了下面的代碼示例: var out bytes.Buffer json.Indent(&out, b, "=", "\t") out.WriteTo(os.Stdout)但是,它再次寫(xiě)入堆,然后再寫(xiě)入 。不過(guò),它確實(shí)刪除了將其轉(zhuǎn)換為字符串的一個(gè)步驟。stdout
1 回答

HUX布斯
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
創(chuàng)建并使用 json。編碼器
定向到 os。司徒
。斷續(xù)器。新編碼器()
接受任何 io。作家
作為其目的地。
res := map[string]interface{}{
"one": 1,
"two": "twotwo",
}
if err := json.NewEncoder(os.Stdout).Encode(res); err != nil {
panic(err)
}
這將輸出(直接輸出到標(biāo)準(zhǔn)輸出):
{"one":1,"two":"twotwo"}
如果要設(shè)置縮進(jìn),請(qǐng)使用其編碼器.
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
if err := enc.Encode(res); err != nil {
panic(err)
}
這將輸出:
{
"one": 1,
"two": "twotwo"
}
- 1 回答
- 0 關(guān)注
- 89 瀏覽
添加回答
舉報(bào)
0/150
提交
取消