今天就跟大家聊聊有关一文读懂去结构体格式化输出,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
在软件系统中定位问题时日志不可或缺,但是当一个系统功能繁多,需要打印的日志也多如牛毛,此时为了提高我们浏览日志的效率,便于阅读的输出格式必不可少。
打印结构体是打印日志时最长见的操作,但是当结构体内容较多都在一行时,不易于阅读。在去中结构体可以方便的转为JSON,因此我们可以借助JSON完成对结构的格式化输出。
<>强打印在一行,使用% + v显示结构体字段名:强>
主要包 导入( “fmt" )//学生学生信息 学生结构体类型{ 名称字符串 Addr HomeInfo M map [string]字符串 }//HomeInfo家庭住址 HomeInfo struct类型{ 省的字符串 城市的字符串 县字符串 街的字符串 DetailedAddr字符串 } var学生={ 名称:“dablelv", Addr: HomeInfo { 省:“Guangdong" 城市:“Shenzhen", 县:“Baoan" 街道:“Xixiang" DetailedAddr:“Shengtianqi" }, M: map [string]字符串{ “hobby":“pingpopng" }, } 函数main () { fmt.Printf (“=% + v \ n"学生,学生) }
运行输出:
学生={名称:猫Addr:{省:广东城市:深圳县:宝安街:西乡DetailedAddr: Shengtianqi} M:地图[爱好:pingpopng]}
引用><强>输出格式化JSON串:强>
函数main () { 废话,_:=json.Marshal(学生) var出bytes.Buffer json.Indent (,, bs,““,“\ t") fmt.Printf(“学生=% v \ n", out.String ()) }运行输出结果:
学生={
引用>
“Name":“cat",
“Addr": {
“Province":“Guangdong",
“City":“Shenzhen",
“County":“Baoan",
“Street":“Xixiang",
“DetailedAddr":“Shengtianqi"
},
“M": {
“hobby":“pingpopng"
}
}将strutc转为json串后再格式化输出,大大增加了可阅读性。
转换函数已经添加至个人的去工具库go-huge-util,使用示例如下:
主要包 导入( “fmt" 巨大的“;github.com/dablelv/go-huge-util" ) 函数main () { 年代,_:=huge.ToFormattedJSON(和学生) fmt.Printf(“学生=% v \ n", s) }运行输出:
学生={
引用>
“Name":“cat",
“Addr": {
“Province":“Guangdong",
“City":“Shenzhen",
“County":“Baoan",
“Street":“Xixiang",
“DetailedAddr":“Shengtianqi"
},
“M": {
“hobby":“pingpopng"
}
}一文读懂去结构体格式化输出