您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關一文讀懂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 結構體格式化輸出有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。