一文读懂去结构体格式化输出

  介绍

今天就跟大家聊聊有关一文读懂去结构体格式化输出,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

在软件系统中定位问题时日志不可或缺,但是当一个系统功能繁多,需要打印的日志也多如牛毛,此时为了提高我们浏览日志的效率,便于阅读的输出格式必不可少。

打印结构体是打印日志时最长见的操作,但是当结构体内容较多都在一行时,不易于阅读。在去中结构体可以方便的转为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"
}
}

一文读懂去结构体格式化输出