Go語言fmt.Sprintf(格式化輸出)
fmt.Sprintf(格式化樣式, 參數列表…)
- 格式化樣式:字符串形式,格式化動詞以
%開頭。 - 參數列表:多個參數以逗號分隔,個數必須與格式化樣式中的個數一一對應,否則運行時會報錯。
在 Go 語言中,格式化的命名延續C語言風格:
- var progress = 2
- var target = 8
- // 兩參數格式化
- title := fmt.Sprintf("已采集%d個葯草, 還需要%d個完成任務", progress, target)
- fmt.Println(title)
- pi := 3.14159
- // 按數值本身的格式輸出
- variant := fmt.Sprintf("%v %v %v", "月球基地", pi, true)
- fmt.Println(variant)
- // 匿名結構體聲明, 並賦予初值
- profile := &struct {
- Name string
- HP int
- }{
- Name: "rat",
- HP: 150,
- }
- fmt.Printf("使用'%%+v' %+v\n", profile)
- fmt.Printf("使用'%%#v' %#v\n", profile)
- fmt.Printf("使用'%%T' %T\n", profile)
var progress = 2
var target = 8
// 兩參數格式化
title := fmt.Sprintf("已采集%d個葯草, 還需要%d個完成任務", progress, target)
fmt.Println(title)
pi := 3.14159
// 按數值本身的格式輸出
variant := fmt.Sprintf("%v %v %v", "月球基地", pi, true)
fmt.Println(variant)
// 匿名結構體聲明, 並賦予初值
profile := &struct {
Name string
HP int
}{
Name: "rat",
HP: 150,
}
fmt.Printf("使用'%%+v' %+v\n", profile)
fmt.Printf("使用'%%#v' %#v\n", profile)
fmt.Printf("使用'%%T' %T\n", profile)
已采集2個葯草, 還需要8個完成任務
"月球基地" 3.14159 true
使用'%+v' &{Name:rat HP:150}
使用'%#v' &struct { Name string; HP int }{Name:"rat", HP:150}
使用'%T' *struct { Name string; HP int }C語言中, 使用%d代表整型參數
下表中標出了常用的一些格式化樣式中的動詞及功能。
| 動 詞 | 功 能 |
|---|---|
| %v | 按值的本來值輸出 |
| %+v | 在 %v 基礎上,對結構體字段名和值進行展開 |
| %#v | 輸出 Go 語言語法格式的值 |
| %T | 輸出 Go 語言語法格式的類型和值 |
| %% | 輸出 % 本體 |
| %b | 整型以二進制方式顯示 |
| %o | 整型以八進制方式顯示 |
| %d | 整型以十進制方式顯示 |
| %x | 整型以十六進制方式顯示 |
| %X | 整型以十六進制、字母大寫方式顯示 |
| %U | Unicode 字符 |
| %f | 浮點數 |
| %p | 指針,十六進制方式顯示 |
