校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 詳解Go 結構體格式化輸出

詳解Go 結構體格式化輸出

熱門標簽:地圖標注測試 烏魯木齊人工電銷機器人系統 廣東語音外呼系統供應商 賺地圖標注的錢犯法嗎 福州鐵通自動外呼系統 長沙ai機器人電銷 智能電銷機器人營銷 澳門防封電銷卡 濮陽自動外呼系統代理

在軟件系統中定位問題時日志不可或缺,但是當一個系統功能繁多,需要打印的日志也多如牛毛,此時為了提高我們瀏覽日志的效率,便于閱讀的輸出格式必不可少。

打印結構體是打印日志時最長見的操作,但是當結構體內容較多都在一行時,不易于閱讀。在 Go 中結構體可以方便的轉為 JSON,因此我們可以借助 JSON 完成對 struct 的格式化輸出。

打印在一行,使用 %+v 顯示結構體字段名:

package main

import (
	"fmt"
)

// Student 學生信息
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)
}

運行輸出:

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

運行輸出結果:

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

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

轉換函數已經添加至個人的 Go 工具庫 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)
}

運行輸出:

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

以上就是詳解Go 結構體格式化輸出的詳細內容,更多關于Go 結構體格式化輸出的資料請關注腳本之家其它相關文章!

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

標簽:貴陽 阿克蘇 慶陽 太原 德州 調研邀請 廣西 西雙版納

巨人網絡通訊聲明:本文標題《詳解Go 結構體格式化輸出》,本文關鍵詞  詳解,結構,體,格式化,輸出,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Go 結構體格式化輸出》相關的同類信息!
  • 本頁收集關于詳解Go 結構體格式化輸出的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 罗定市| 汾西县| 濮阳市| 砚山县| 额敏县| 合作市| 银川市| 巴里| 海晏县| 开远市| 哈尔滨市| 含山县| 蓬安县| 绿春县| 息烽县| 遵化市| 孝义市| 辛集市| 务川| 凌海市| 惠安县| 汝阳县| 华安县| 香河县| 多伦县| 南川市| 利川市| 永春县| 彭水| 和静县| 齐河县| 南京市| 平果县| 富顺县| 息烽县| 陆丰市| 文昌市| 巴彦县| 灵石县| 新疆| 合水县|