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說明
占位符 說明
%v 輸出所有的值信息
%+v 打印結(jié)構(gòu)體時會打印字段名
%#v 相應(yīng)值的Go語法表示
2 其他占位符說明
2.1 布爾
占位符 說明 舉例 輸出
%t true 或 false。Printf("%t", true) true2.2 整數(shù)
占位符 說明 舉例 輸出
%b 二進制表示 Printf("%b", 5) 101
%c 相應(yīng)Unicode碼點所表示的字符 Printf("%c", 0x4E2D) 中
%d 十進制表示 Printf("%d", 0x12) 18
%o 八進制表示 Printf("%d", 10) 12
%q 單引號圍繞的字符字面值,由Go語法安全地轉(zhuǎn)義 Printf("%q", 0x4E2D) '中'
%x 十六進制表示,字母形式為小寫 a-f Printf("%x", 13) d
%X 十六進制表示,字母形式為大寫 A-F Printf("%x", 13) D
%U Unicode格式:U+1234,等同于 "U+%04X" Printf("%U", 0x4E2D) U+4E2D2.3 字符串以及字節(jié)切片
占位符 說明 舉例 輸出
%s 輸出字符串表示(string類型或[]byte) Printf("%s", []byte("Go語言")) Go語言
%q 雙引號圍繞的字符串,由Go語法安全地轉(zhuǎn)義 Printf("%q", "Go語言") "Go語言"
%x 十六進制,小寫字母,每字節(jié)兩個字符 Printf("%x", "golang") 676f6c616e67
%X 十六進制,大寫字母,每字節(jié)兩個字符 Printf("%X", "golang") 676F6C616E672.4 指針
占位符 說明 舉例 輸出
%p 十六進制表示,前綴 0x Printf("%p", &people) 0x4f57f02.5 浮點數(shù)與復(fù)數(shù)
占位符 說明 舉例 輸出
%b 無小數(shù)部分的,指數(shù)為二的冪的科學計數(shù)法,
與 strconv.FormatFloat 的 'b' 轉(zhuǎn)換格式一致。例如 -123456p-78
%e 科學計數(shù)法,例如 -1234.456e+78 Printf("%e", 10.2) 1.020000e+01
%E 科學計數(shù)法,例如 -1234.456E+78 Printf("%e", 10.2) 1.020000E+01
%f 有小數(shù)點而無指數(shù),例如 123.456 Printf("%f", 10.2) 10.200000
%g 根據(jù)情況選擇 %e 或 %f 以產(chǎn)生更緊湊的(無末尾的0)輸出 Printf("%g", 10.20) 10.2
%G 根據(jù)情況選擇 %E 或 %f 以產(chǎn)生更緊湊的(無末尾的0)輸出 Printf("%G", 10.20+2i) 附:go語言結(jié)構(gòu)體打印時,%v 和 %+v 的區(qū)別
在 Go 語言中,%v 和 %+v 都是格式化打印結(jié)構(gòu)體的占位符。它們的區(qū)別如下:
- %v:默認格式化打印結(jié)構(gòu)體,只輸出結(jié)構(gòu)體的所有字段值,字段之間以空格隔開。
- %+v:格式化打印結(jié)構(gòu)體,會輸出結(jié)構(gòu)體類型和字段名稱,字段之間以空格隔開。
例如,假設(shè)有一個結(jié)構(gòu)體 Person 定義如下:
Go
type Person struct {
Name string
Age int
}
如果定義了一個 Person 類型的變量 p,并使用 fmt.Println() 函數(shù)打印它,則輸出結(jié)果如下:
Go
p := Person{Name: "John Doe", Age: 30}
fmt.Println(p) // {John Doe 30}
使用 %v 占位符打印結(jié)構(gòu)體,只會輸出結(jié)構(gòu)體的所有字段值,即 John Doe 和 30。
如果使用 %+v 占位符打印結(jié)構(gòu)體,則會輸出結(jié)構(gòu)體類型和字段名稱,即 Person{Name: John Doe, Age: 30}。
總結(jié):
%v:默認格式化打印結(jié)構(gòu)體,只輸出字段值。%+v:格式化打印結(jié)構(gòu)體,輸出結(jié)構(gòu)體類型和字段名稱。
根據(jù)需要選擇合適的占位符來打印結(jié)構(gòu)體。
總結(jié)
到此這篇關(guān)于golang占位符%v、%+v、%#v舉例詳解的文章就介紹到這了,更多相關(guān)go占位符%v、%+v、%#v內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
go從指定的URL下載圖片并保存到本地的代碼實現(xiàn)
這段代碼定義了一個名為 downloadImage 的函數(shù),其目的是從指定的URL下載圖片并保存到本地文件系統(tǒng),本文是對代碼功能的詳細描述,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-08-08
golang結(jié)合mysql設(shè)置最大連接數(shù)和最大空閑連接數(shù)
本文介紹golang?中連接MySQL時,如何設(shè)置最大連接數(shù)和最大空閑連接數(shù),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02

