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