日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

深入了解Golang中的格式化輸出_Golang

作者:PolarDay. ? 更新時間: 2022-12-15 編程語言

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,但輸出結(jié)構(gòu)體時會添加字段名
%#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|
}

原文鏈接:https://blog.csdn.net/shn111/article/details/127877743

欄目分類
最近更新