golang占位符%v、%+v、%#v舉例詳解
package main import "fmt" type Person struct { Name string Age int } func main() { person := Person{ Name: "test", Age: 15, } fmt.Printf("%v\n", person) fmt.Printf("%+v\n", person) fmt.Printf("%#v\n", person) }
執(zhí)行輸出如下:
{test 15}</code><code>{Name:test Age:15}</code><code>main.Person{Name:"test", Age:15}
1 占位符%v、%+v、%#v說(shuō)明
占位符 說(shuō)明
%v 輸出所有的值信息
%+v 打印結(jié)構(gòu)體時(shí)會(huì)打印字段名
%#v 相應(yīng)值的Go語(yǔ)法表示
2 其他占位符說(shuō)明
2.1 布爾
占位符 說(shuō)明 舉例 輸出 %t true 或 false。Printf("%t", true) true
2.2 整數(shù)
占位符 說(shuō)明 舉例 輸出 %b 二進(jìn)制表示 Printf("%b", 5) 101 %c 相應(yīng)Unicode碼點(diǎn)所表示的字符 Printf("%c", 0x4E2D) 中 %d 十進(jìn)制表示 Printf("%d", 0x12) 18 %o 八進(jìn)制表示 Printf("%d", 10) 12 %q 單引號(hào)圍繞的字符字面值,由Go語(yǔ)法安全地轉(zhuǎn)義 Printf("%q", 0x4E2D) '中' %x 十六進(jìn)制表示,字母形式為小寫(xiě) a-f Printf("%x", 13) d %X 十六進(jìn)制表示,字母形式為大寫(xiě) A-F Printf("%x", 13) D %U Unicode格式:U+1234,等同于 "U+%04X" Printf("%U", 0x4E2D) U+4E2D
2.3 字符串以及字節(jié)切片
占位符 說(shuō)明 舉例 輸出 %s 輸出字符串表示(string類(lèi)型或[]byte) Printf("%s", []byte("Go語(yǔ)言")) Go語(yǔ)言 %q 雙引號(hào)圍繞的字符串,由Go語(yǔ)法安全地轉(zhuǎn)義 Printf("%q", "Go語(yǔ)言") "Go語(yǔ)言" %x 十六進(jìn)制,小寫(xiě)字母,每字節(jié)兩個(gè)字符 Printf("%x", "golang") 676f6c616e67 %X 十六進(jìn)制,大寫(xiě)字母,每字節(jié)兩個(gè)字符 Printf("%X", "golang") 676F6C616E67
2.4 指針
占位符 說(shuō)明 舉例 輸出 %p 十六進(jìn)制表示,前綴 0x Printf("%p", &people) 0x4f57f0
2.5 浮點(diǎn)數(shù)與復(fù)數(shù)
占位符 說(shuō)明 舉例 輸出 %b 無(wú)小數(shù)部分的,指數(shù)為二的冪的科學(xué)計(jì)數(shù)法, 與 strconv.FormatFloat 的 'b' 轉(zhuǎn)換格式一致。例如 -123456p-78 %e 科學(xué)計(jì)數(shù)法,例如 -1234.456e+78 Printf("%e", 10.2) 1.020000e+01 %E 科學(xué)計(jì)數(shù)法,例如 -1234.456E+78 Printf("%e", 10.2) 1.020000E+01 %f 有小數(shù)點(diǎn)而無(wú)指數(shù),例如 123.456 Printf("%f", 10.2) 10.200000 %g 根據(jù)情況選擇 %e 或 %f 以產(chǎn)生更緊湊的(無(wú)末尾的0)輸出 Printf("%g", 10.20) 10.2 %G 根據(jù)情況選擇 %E 或 %f 以產(chǎn)生更緊湊的(無(wú)末尾的0)輸出 Printf("%G", 10.20+2i)
附:go語(yǔ)言結(jié)構(gòu)體打印時(shí),%v 和 %+v 的區(qū)別
在 Go 語(yǔ)言中,%v
和 %+v
都是格式化打印結(jié)構(gòu)體的占位符。它們的區(qū)別如下:
- %v:默認(rèn)格式化打印結(jié)構(gòu)體,只輸出結(jié)構(gòu)體的所有字段值,字段之間以空格隔開(kāi)。
- %+v:格式化打印結(jié)構(gòu)體,會(huì)輸出結(jié)構(gòu)體類(lèi)型和字段名稱(chēng),字段之間以空格隔開(kāi)。
例如,假設(shè)有一個(gè)結(jié)構(gòu)體 Person
定義如下:
Go
type Person struct { Name string Age int }
如果定義了一個(gè) Person
類(lèi)型的變量 p
,并使用 fmt.Println()
函數(shù)打印它,則輸出結(jié)果如下:
Go
p := Person{Name: "John Doe", Age: 30} fmt.Println(p) // {John Doe 30}
使用 %v
占位符打印結(jié)構(gòu)體,只會(huì)輸出結(jié)構(gòu)體的所有字段值,即 John Doe
和 30
。
如果使用 %+v
占位符打印結(jié)構(gòu)體,則會(huì)輸出結(jié)構(gòu)體類(lèi)型和字段名稱(chēng),即 Person{Name: John Doe, Age: 30}
。
總結(jié):
%v
:默認(rèn)格式化打印結(jié)構(gòu)體,只輸出字段值。%+v
:格式化打印結(jié)構(gòu)體,輸出結(jié)構(gòu)體類(lèi)型和字段名稱(chēng)。
根據(jù)需要選擇合適的占位符來(lái)打印結(jié)構(gòu)體。
總結(jié)
到此這篇關(guān)于golang占位符%v、%+v、%#v舉例詳解的文章就介紹到這了,更多相關(guān)go占位符%v、%+v、%#v內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang 流式讀取和發(fā)送使用場(chǎng)景示例
這篇文章主要為大家介紹了golang 流式讀取和發(fā)送使用場(chǎng)景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Go語(yǔ)言實(shí)現(xiàn)互斥鎖、隨機(jī)數(shù)、time、List
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)互斥鎖、隨機(jī)數(shù)、time、List的相關(guān)資料,需要的朋友可以參考下2018-10-10go判斷文件夾是否存在并創(chuàng)建的實(shí)例
這篇文章主要介紹了go判斷文件夾是否存在,并創(chuàng)建的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12GO 函數(shù)式選項(xiàng)模式(Functional Options Pattern)
Option模式支持傳遞多個(gè)參數(shù),并且在參數(shù)個(gè)數(shù)、類(lèi)型發(fā)生變化時(shí)保持兼容性,任意順序傳遞參數(shù),下面給大家介紹GO 函數(shù)式選項(xiàng)模式(Functional Options Pattern)的相關(guān)知識(shí),感興趣的朋友一起看看吧2021-10-10GOLANG使用Context管理關(guān)聯(lián)goroutine的方法
這篇文章主要介紹了GOLANG使用Context管理關(guān)聯(lián)goroutine的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01Golang使用gin框架實(shí)現(xiàn)一個(gè)完整的聊天室功能
由于我們項(xiàng)目的需要,我就研究了一下關(guān)于websocket的相關(guān)內(nèi)容,去實(shí)現(xiàn)一個(gè)聊天室的功能,經(jīng)過(guò)幾天的探索,現(xiàn)在使用Gin框架實(shí)現(xiàn)了一個(gè)完整的聊天室+消息實(shí)時(shí)通知系統(tǒng),感興趣的小伙伴歡迎閱讀本文2023-08-08通過(guò)Golang實(shí)現(xiàn)linux命令ls命令(命令行工具構(gòu)建)
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Golang實(shí)現(xiàn)一個(gè)linux命令ls命令(命令行工具構(gòu)建),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下2023-01-01