OpenMix 出品:https://openmix.org
Mix XFMT
可以打印結(jié)構(gòu)體嵌套指針地址內(nèi)部數(shù)據(jù)的格式化庫
Formatting library that can print the internal data of the nested pointer address of the struct
Github
https://github.com/mix-go/xfmt
Overview
在 Golang 中使用 fmt
打印結(jié)構(gòu)體時滨达,無法打印指針字段內(nèi)部的數(shù)據(jù)結(jié)構(gòu)飒炎,導致增加 debug 難度,該庫可以解決這個問題庭敦。
Installation
- 安裝
go get -u github.com/mix-go/xfmt
Usage
-
支持的方法匿情,與
fmt
系統(tǒng)庫完全一致Sprintf(format string, args ...interface{}) string
Sprint(args ...interface{}) string
Sprintln(args ...interface{}) string
Printf(format string, args ...interface{})
Print(args ...interface{})
Println(args ...interface{})
支持
Tag
忽略某個引用字段
type Foo struct {
Bar *Bar `xfmt:"-"`
}
- 使用
包含指針的結(jié)構(gòu)體
type Level3 struct {
Name string
}
type Level2 struct {
Level3 *Level3 `xfmt:"-"`
Name string
}
type Level1 struct {
Name string
Level2 *Level2
Level2_1 *Level2
}
創(chuàng)建變量
l3 := Level3{Name: "Level3"}
l2 := Level2{Name: "Level2", Level3: &l3}
l1 := Level1{Name: "Level1", Level2: &l2, Level2_1: &l2}
打印對比
-
fmt
打印
fmt.Println(fmt.Sprintf("%+v", l1))
{Name:Level1 Level2:0xc00009c500 Level2_1:0xc00009c500}
-
xfmt
打永计取:其中 Level3 被定義的 tag 忽略,Level2_1 由于和 Level2 是同一個指針因此后面的忽略處理
fmt.Println(xfmt.Sprintf("%+v", l1))
{Name:Level1 Level2:0xc00009c500:&{Level3:0xc00007f030 Name:Level2} Level2_1:0xc00009c500}
License
Apache License Version 2.0, http://www.apache.org/licenses/