Go語言的占位符
Golang
的字符串占位符在 fmt
包的各種打印函數中使用,如 fmt.Printf
、fmt.Sprintf
。
變量值與類型的打印
%v
: 打印變量的值
%v
會根據變量的類型選擇合適的格式進行打印。- 對于結構體,
%v
會打印出結構體的字段。 - 對于指針類型,會打印出指針指向的值。
%T
: 打印變量的類型
%T
會打印出變量的具體類型。
x := 42
y := "hello"
z := 3.14
fmt.Printf("x: %v, 類型: %T\n", x, x)
fmt.Printf("y: %v, 類型: %T\n", y, y)
fmt.Printf("z: %v, 類型: %T\n", z, z)
運行如上代碼,輸出
x: 42, 類型: int
y: hello, 類型: string
z: 3.14, 類型: float64
整數
%d
十進制表示
%b
二進制表示
%o
八進制表示
%x
、%X
十六進制表示(%x
小寫字母、%X
大寫字母)
n := 42
fmt.Printf("十進制: %d\n", n)
fmt.Printf("二進制: %b\n", n)
fmt.Printf("八進制: %o\n", n)
fmt.Printf("十六進制(小寫): %x\n", n)
fmt.Printf("十六進制(大寫): %X\n", n)
運行如上代碼,輸出
十進制: 42
二進制: 101010
八進制: 52
十六進制(小寫): 2a
十六進制(大寫): 2A
浮點數和整數
%f
有小數點的十進制表示
%e
、%E
科學計數法
%g
, %G
: 根據情況選擇 %f
或 %e
(%g
使用小寫字母,%G
使用大寫字母)
f := 3.1415926
fmt.Printf("浮點數: %f\n", f)
fmt.Printf("科學計數法(小寫): %e\n", f)
fmt.Printf("科學計數法(大寫): %E\n", f)
運行如上代碼,輸出
浮點數: 3.141593
科學計數法(小寫): 3.141593e+00
科學計數法(大寫): 3.141593E+00
字符串和字節切片
%s
: 直接輸出字符串或字節切片
%q
: 使用雙引號括起來的字符串
%x
, %X
: 每個字節用兩字符的十六進制表示
s := "hello"
fmt.Printf("字符串: %s\n", s)
fmt.Printf("帶引號的字符串: %q\n", s)
fmt.Printf("每個字節用十六進制表示(小寫): %x\n", s)
fmt.Printf("每個字節用十六進制表示(大寫): %X\n", s)
運行如上代碼,輸出
字符串: hello
帶引號的字符串: "hello"
每個字節用十六進制表示(小寫): 68656c6c6f
每個字節用十六進制表示(大寫): 68656C6C6F
指針
%p
: 指針地址
t := 100
p := &t
fmt.Printf("指針地址: %p\n", p)
運行如上代碼,輸出
指針地址: 0xc00001a128
布爾值
%t
: 布爾值(true
或 false
)
b := true
fmt.Printf("布爾值: %t\n", b)
運行如上代碼,輸出
布爾值: true
其他
%%
: 字面上的百分號(%
)
%U
: Unicode
格式:U+1234
%c
: 字符(對應 Unicode
碼點)
%v
, %+v
, %#v
: 通用的占位符
%v
: 值的默認格式表示
%+v
: 類似 %v
,但會打印結構體的字段名
%#v
: 值的 Go
語言語法表示
fmt.Printf("百分號: 100%%\n")// 定義如下 Unicode 字符
var char1 rune = 'A'
var char2 rune = '中'
var char3 rune = '😊'// 使用 %U 格式化輸出 Unicode 碼點
fmt.Printf("char1: %c Unicode: %U\n", char1, char1)
fmt.Printf("char2: %c Unicode: %U\n", char2, char2)
fmt.Printf("char3: %c Unicode: %U\n", char3, char3)type Person struct {Name stringAge int
}person := Person{Name: "Alice",Age: 30,
}fmt.Printf("值的默認格式表示: %v\n", person)
fmt.Printf("值帶結構體的字段名表示: %+v\n", person)
fmt.Printf("值的Go語言語法表示: %#v\n", person)
運行如上代碼,輸出
百分號: 100%
char1: A Unicode: U+0041
char2: 中 Unicode: U+4E2D
char3: 😊 Unicode: U+1F60A
值的默認格式表示: {Alice 30}
值帶結構體的字段名表示: {Name:Alice Age:30}
值的Go語言語法表示: main.Person{Name:"Alice", Age:30}