• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解Go 结构体格式化输出

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

    打印结构体是打印日志时最长见的操作,但是当结构体内容较多都在一行时,不易于阅读。在 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语言中的匿名结构体用法实例
    上一篇:谈谈对Golang IO读写的困惑
    下一篇:详解Go 并发
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解Go 结构体格式化输出 详解,结构,体,格式化,输出,