深入了解Golang中的格式化輸出
fmt
Go語(yǔ)言用于控制文本輸出常用的標(biāo)準(zhǔn)庫(kù)是fmt
fmt中主要用于輸出的函數(shù)有:
- Print: 輸出到控制臺(tái),不接受任何格式化操作
- Println: 輸出到控制臺(tái)并換行
- Printf: 格式化輸出,只可以打印出格式化的字符串,只可以直接輸出字符串類型的變量(不可以直接輸出別的類型)
- Sprintf: 格式化并返回一個(gè)字符串而不帶任何輸出
- Fprintf: 來格式化并輸出到io.Writers而不是os.Stdout
格式化
通過Printf函數(shù)來測(cè)試下Go語(yǔ)言里面的字符串格式化:
fmt.Sprintf(格式化樣式, 參數(shù)列表…)
格式樣式: 字符串形式,格式化符號(hào)以%開頭,%s字符串格式,%d十進(jìn)制的整數(shù)格式
參數(shù)列表: 多個(gè)參數(shù)以逗號(hào)分隔,個(gè)數(shù)必須與格式化樣式中的個(gè)數(shù)一一對(duì)應(yīng),否則運(yùn)行時(shí)會(huì)報(bào)錯(cuò)
比如:
username := "boy"
fmt.Printf("welcome, %s", username)
整數(shù)格式化
| 占 位 符 | 描 述 |
|---|---|
| %b | 整數(shù)以二進(jìn)制方式顯示 |
| %o | 整數(shù)以八進(jìn)制方式顯示 |
| %d | 整數(shù)以十進(jìn)制方式顯示 |
| %x | 整數(shù)以十六進(jìn)制方式顯示 |
| %X | 整數(shù)以十六進(jìn)制、字母大寫方式顯示 |
| %c | 相應(yīng)Unicode碼點(diǎn)所表示的字符 |
| %U | Unicode字符,Unicode格式:123,等同于“U+007B” |
func main() {
fmt.Printf("%b \n", 123) //1111011
fmt.Printf("%o \n", 123) //173
fmt.Printf("%d \n", 123) //123
fmt.Printf("%x \n", 123) //7b
fmt.Printf("%X \n", 123) //7B
fmt.Printf("%c \n", 123) //{
fmt.Printf("%U \n", 123) //U+007B
}
浮點(diǎn)數(shù)格式化
| 占 位 符 | 描 述 |
|---|---|
| %e | 科學(xué)計(jì)數(shù)法,例如 1.234560e+02 |
| %E | 科學(xué)計(jì)數(shù)法,例如 1.234560E+02 |
| %f | 有小數(shù)點(diǎn)而無指數(shù),例如 123.456 |
| %F | 等價(jià)于%f |
| %g | 根據(jù)情況選擇 %e 或 %f 以產(chǎn)生更緊湊的(無末尾的0)輸出 |
| %G | 根據(jù)情況選擇 %E 或 %F 以產(chǎn)生更緊湊的(無末尾的0)輸出 |
func main() {
fmt.Printf("%e \n", 123.456) //1.234560e+02
fmt.Printf("%E \n", 123.456) //1.234560E+02
fmt.Printf("%f \n", 123.456) //123.456000
fmt.Printf("%F \n", 123.456) //123.456000
fmt.Printf("%g \n", 123.456) //123.456
fmt.Printf("%G \n", 123.456) //123.456
}
布爾類型格式化
| 占 位 符 | 描 述 |
|---|---|
| %t | true 或 false |
func main() {
fmt.Printf("%t", true) //true
}
字符格式化
| 占 位 符 | 描 述 |
|---|---|
| %c | 相應(yīng)Unicode碼點(diǎn)所表示的字符 |
func main() {
fmt.Printf("%c", 0x4E2D) //中
}
字符串格式化
| 占 位 符 | 描 述 |
|---|---|
| %s | 直接輸出字符串或者[]byte |
| %q | 雙引號(hào)圍繞的字符串,由Go語(yǔ)法安全地轉(zhuǎn)義 |
| %x | 每個(gè)字節(jié)用兩字符十六進(jìn)制數(shù)表示(使用a-f) |
| %X | 每個(gè)字節(jié)用兩字符十六進(jìn)制數(shù)表示(使用A-F) |
func main() {
fmt.Printf("%s \n", "Hello world") //Hello world
fmt.Printf("%q \n", "Hello world") //"Hello world"
fmt.Printf("%x \n", "Hello world") //48656c6c6f20776f726c64
fmt.Printf("%X \n", "Hello world") //48656C6C6F20776F726C64
}
指針格式化
| 占 位 符 | 描 述 |
|---|---|
| %p | 表示為十六進(jìn)制,并加上前導(dǎo)的0x |
| %#p | 表示為十六進(jìn)制,沒有前導(dǎo)的0x |
func main() {
a := "Hello world"
b := &a
fmt.Printf("%p \n", b) //0xc000046230
fmt.Printf("%#p \n", b) //c000046230
}
通用占位符
| 占 位 符 | 描 述 |
|---|---|
| %v | 值的默認(rèn)格式 |
| %+v | 類似%v,但輸出結(jié)構(gòu)體時(shí)會(huì)添加字段名 |
| %#v | 相應(yīng)值的Go語(yǔ)法表示 |
| %T | 相應(yīng)值的類型的Go語(yǔ)法表示 |
| %% | 百分號(hào),字面上的%,非占位符含義 |
func main() {
fmt.Printf("%v \n", "Hello World") //Hello World
fmt.Printf("%+v \n", "Hello World") //Hello World
fmt.Printf("%#v \n", "Hello World") //"Hello World"
fmt.Printf("%T \n", "Hello World") //string
fmt.Printf("%%%v \n", "Hello World") //%Hello World
}
寬度表示
浮點(diǎn)數(shù)精度控制
寬度通過一個(gè)緊跟在百分號(hào)后面的十進(jìn)制數(shù)指定,如果未指定寬度,則表示值時(shí)除必需之外不作填充。
精度通過(可選的)寬度后跟點(diǎn)號(hào)后跟的十進(jìn)制數(shù)指定。如果未指定精度,會(huì)使用默認(rèn)精度;如果點(diǎn)號(hào)后沒有跟數(shù)字,表示精度為0。舉例如下
func main() {
fmt.Printf("|%f|\n", 123.456) //|123.456000|
fmt.Printf("|%12f|\n", 123.456) //| 123.456000|
fmt.Printf("|%.3f|\n", 123.456) //|123.456|
fmt.Printf("|%12.3f|\n", 123.456) //| 123.456|
fmt.Printf("|%12.f|\n", 123.456) //| 123|
}
字符串長(zhǎng)度控制
寬度設(shè)置格式:占位符中間加一個(gè)數(shù)字, 數(shù)字分正負(fù), +: 右對(duì)齊, -: 左對(duì)齊
最小寬度:百分號(hào)后緊跟十進(jìn)制數(shù),不夠部分可以選擇補(bǔ)0
最大寬度:小數(shù)點(diǎn)后的十進(jìn)制數(shù),超出的部分會(huì)被截?cái)?/p>
func main() {
fmt.Printf("|%s|\n", "123.456") //|123.456|
fmt.Printf("|%12s|\n", "123.456") //| 123.456|
fmt.Printf("|%-12s|\n", "123.456") //|123.456 |
fmt.Printf("|%012s|\n", "123.456") //|00000123.456|
fmt.Printf("|%.5s|\n", "123.456") //|123.4|
}到此這篇關(guān)于深入了解Golang中的格式化輸出的文章就介紹到這了,更多相關(guān)Golang格式化輸出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang中context包使用場(chǎng)景和示例詳解
這篇文章結(jié)合示例代碼介紹了context包的幾種使用場(chǎng)景,文中有詳細(xì)的代碼示例,對(duì)學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-05-05
xorm根據(jù)數(shù)據(jù)庫(kù)生成go model文件的操作
這篇文章主要介紹了xorm根據(jù)數(shù)據(jù)庫(kù)生成go model文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Go語(yǔ)言基本的語(yǔ)法和內(nèi)置數(shù)據(jù)類型初探
這篇文章主要介紹了Go語(yǔ)言基本的語(yǔ)法和內(nèi)置數(shù)據(jù)類型,是golang入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10

