Go語言中的格式化占位符的實現示例
在 Go 語言中,fmt
包提供了大量的格式化占位符,用于格式化輸出不同類型的數據。選擇合適的占位符,可以確保輸出的內容格式正確、清晰易懂。
常見的占位符:
基本類型
%v
:按值的默認格式輸出。適用于任何類型。%+v
:在%v
的基礎上,結構體會額外輸出字段名。%#v
:輸出 Go 語法表示的值。結構體會輸出詳細的字段信息和類型。%T
:輸出值的類型。%%
:字面百分號(%
本身)。
整數類型
%d
:十進制整數。%b
:二進制格式。%o
:八進制格式。%x
:十六進制格式(小寫字母)。%X
:十六進制格式(大寫字母)。%c
:相應 Unicode 碼點的字符。
浮點數和復數
%f
:標準浮點數表示(小數部分)。%e
:科學計數法表示(小寫 e)。%E
:科學計數法表示(大寫 E)。%g
:根據具體情況選擇%f
或%e
表示。
字符串和字節(jié)
%s
:字符串。%q
:帶雙引號的字符串,安全轉義。%x
:以十六進制表示字符串或字節(jié)切片。%X
:以大寫十六進制表示字符串或字節(jié)切片。
布爾類型
%t
:布爾值 (true
或false
)。
指針
%p
:指針的十六進制表示。
如何選擇占位符:
選擇占位符時,首先需要根據數據類型選擇合適的格式化符號,具體情況如下:
輸出通用數據類型:
使用 %v
是通用、默認的選擇。如果你不確定類型,%v
可以輸出所有類型的值。例如:
logx.Infof("Result: %v", result)
輸出結構體:
如果想要查看結構體的詳細信息,可以使用 %+v
輸出字段名和值,或者使用 %#v
輸出 Go 語言格式的值。例如:
logx.Infof("Struct data: %+v", myStruct) logx.Infof("Go syntax: %#v", myStruct)
輸出字符串:
一般使用 %s
輸出字符串;如果需要輸出帶雙引號和轉義字符的安全字符串,使用 %q
。例如:
logx.Infof("User input: %s", input) logx.Infof("Escaped string: %q", input)
輸出整數:
使用 %d
輸出十進制整數,如果需要以二進制或十六進制表示,可以分別使用 %b
和 %x
。例如:
logx.Infof("User age: %d", age) logx.Infof("Memory address in hex: %x", pointer)
輸出浮點數:
一般使用 %f
輸出浮點數,輸出帶有小數部分;如果需要科學計數法表示,使用 %e
或 %E
。例如:
logx.Infof("Price: %f", price) logx.Infof("Price in scientific notation: %e", price)
輸出指針:
如果你需要輸出一個指針的值,使用 %p
會顯示其十六進制地址。例如:
logx.Infof("Pointer address: %p", &myVar)
實際案例:
假設我們有如下數據:
taskID := 12345 price := 1234.567 name := "Alice" completed := true myStruct := struct { ID int Name string }{ ID: 1, Name: "TestTask", }
使用占位符輸出:
logx.Infof("Task ID: %d", taskID) // 輸出十進制整數 logx.Infof("Price: %f", price) // 輸出浮點數 logx.Infof("User: %s", name) // 輸出字符串 logx.Infof("Task completed: %t", completed) // 輸出布爾值 logx.Infof("Task info: %+v", myStruct) // 輸出結構體,帶字段名和值
占位符一覽表:
占位符 | 說明 | 示例 |
---|---|---|
%v | 默認格式 | logx.Infof("%v", 42) |
%+v | 結構體字段和值 | logx.Infof("%+v", obj) |
%#v | Go 語法表示值 | logx.Infof("%#v", obj) |
%T | 輸出值的類型 | logx.Infof("%T", obj) |
%d | 十進制整數 | logx.Infof("%d", 123) |
%b | 二進制整數 | logx.Infof("%b", 7) |
%x | 十六進制小寫 | logx.Infof("%x", 255) |
%f | 浮點數 | logx.Infof("%f", 3.14) |
%t | 布爾值 | logx.Infof("%t", true) |
%p | 指針地址 | logx.Infof("%p", ptr) |
%s | 字符串 | logx.Infof("%s", "abc") |
%q | 帶雙引號的字符串 | logx.Infof("%q", "abc") |
通過根據數據類型選擇正確的占位符,可以確保輸出信息的格式化和可讀性。
到此這篇關于Go語言中的格式化占位符的實現示例的文章就介紹到這了,更多相關Go 格式化占位符內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!