濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 詳解Go 結(jié)構(gòu)體格式化輸出

詳解Go 結(jié)構(gòu)體格式化輸出

熱門標(biāo)簽:地圖標(biāo)注測(cè)試 烏魯木齊人工電銷機(jī)器人系統(tǒng) 廣東語(yǔ)音外呼系統(tǒng)供應(yīng)商 賺地圖標(biāo)注的錢犯法嗎 福州鐵通自動(dòng)外呼系統(tǒng) 長(zhǎng)沙ai機(jī)器人電銷 智能電銷機(jī)器人營(yíng)銷 澳門防封電銷卡 濮陽(yáng)自動(dòng)外呼系統(tǒng)代理

在軟件系統(tǒng)中定位問(wèn)題時(shí)日志不可或缺,但是當(dāng)一個(gè)系統(tǒng)功能繁多,需要打印的日志也多如牛毛,此時(shí)為了提高我們?yōu)g覽日志的效率,便于閱讀的輸出格式必不可少。

打印結(jié)構(gòu)體是打印日志時(shí)最長(zhǎng)見(jiàn)的操作,但是當(dāng)結(jié)構(gòu)體內(nèi)容較多都在一行時(shí),不易于閱讀。在 Go 中結(jié)構(gòu)體可以方便的轉(zhuǎn)為 JSON,因此我們可以借助 JSON 完成對(duì) struct 的格式化輸出。

打印在一行,使用 %+v 顯示結(jié)構(gòu)體字段名:

package main

import (
	"fmt"
)

// Student 學(xué)生信息
type Student struct {
	Name  string
	Addr  HomeInfo
	M   map[string]string
}

// HomeInfo 家庭住址
type HomeInfo struct {
	Province   string
	City     string
	County    string
	Street    string
	DetailedAddr string
}

var student = Student{
	Name: "dablelv",
	Addr: HomeInfo{
		Province:   "Guangdong",
		City:     "Shenzhen",
		County:    "Baoan",
		Street:    "Xixiang",
		DetailedAddr: "Shengtianqi",
	},
	M: map[string]string{
		"hobby": "pingpopng",
	},
}

func main() {
	fmt.Printf("student=%+v\n", student)
}

運(yùn)行輸出:

student={Name:cat Addr:{Province:Guangdong City:Shenzhen County:Baoan Street:Xixiang DetailedAddr:Shengtianqi} M:map[hobby:pingpopng]}

輸出格式化 JSON 串:

func main() {
	bs, _ := json.Marshal(student)
	var out bytes.Buffer
	json.Indent(out, bs, "", "\t")
	fmt.Printf("student=%v\n", out.String())
}

運(yùn)行輸出結(jié)果:

student={
"Name": "cat",
"Addr": {
"Province": "Guangdong",
"City": "Shenzhen",
"County": "Baoan",
"Street": "Xixiang",
"DetailedAddr": "Shengtianqi"
},
"M": {
"hobby": "pingpopng"
}
}

將 strutc 轉(zhuǎn)為 json 串后再格式化輸出,大大增加了可閱讀性。

轉(zhuǎn)換函數(shù)已經(jīng)添加至個(gè)人的 Go 工具庫(kù) go-huge-util,使用示例如下:

package main

import (
	"fmt"
  huge "github.com/dablelv/go-huge-util"
)

func main() {
	s, _ := huge.ToFormattedJSON(student)
	fmt.Printf("student=%v\n", s)
}

運(yùn)行輸出:

student={
"Name": "cat",
"Addr": {
"Province": "Guangdong",
"City": "Shenzhen",
"County": "Baoan",
"Street": "Xixiang",
"DetailedAddr": "Shengtianqi"
},
"M": {
"hobby": "pingpopng"
}
}

以上就是詳解Go 結(jié)構(gòu)體格式化輸出的詳細(xì)內(nèi)容,更多關(guān)于Go 結(jié)構(gòu)體格式化輸出的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Go 結(jié)構(gòu)體、數(shù)組、字典和 json 字符串的相互轉(zhuǎn)換方法
  • go語(yǔ)言使用第三方包 json化結(jié)構(gòu)體操作示例
  • golang結(jié)構(gòu)體與json格式串實(shí)例代碼
  • Go語(yǔ)言中結(jié)構(gòu)體方法副本傳參與指針傳參的區(qū)別介紹
  • 淺談Go語(yǔ)言中的結(jié)構(gòu)體struct & 接口Interface & 反射
  • go語(yǔ)言通過(guò)反射獲取和設(shè)置結(jié)構(gòu)體字段值的方法
  • Go語(yǔ)言里的結(jié)構(gòu)體文法實(shí)例分析
  • Go語(yǔ)言指針訪問(wèn)結(jié)構(gòu)體的方法
  • Go語(yǔ)言結(jié)構(gòu)體定義和使用方法
  • Go語(yǔ)言中的匿名結(jié)構(gòu)體用法實(shí)例

標(biāo)簽:貴陽(yáng) 阿克蘇 慶陽(yáng) 太原 德州 調(diào)研邀請(qǐng) 廣西 西雙版納

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解Go 結(jié)構(gòu)體格式化輸出》,本文關(guān)鍵詞  詳解,結(jié)構(gòu),體,格式化,輸出,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解Go 結(jié)構(gòu)體格式化輸出》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于詳解Go 結(jié)構(gòu)體格式化輸出的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    南安市| 淄博市| 石泉县| 博客| 麻阳| 略阳县| 紫金县| 沙田区| 泸水县| 东乡族自治县| 义乌市| 尚义县| 理塘县| 阜宁县| 西安市| 沙洋县| 榆林市| 晋州市| 安乡县| 涞源县| 金山区| 宜良县| 溧水县| 鹰潭市| 日照市| 清河县| 湖口县| 灵川县| 新绛县| 赤壁市| 定州市| 磐安县| 青海省| 确山县| 遂宁市| 登封市| 建昌县| 深州市| 新宁县| 吴旗县| 从化市|