golang 占位符還傻傻分不清?
xdm ,寫 C/C++ 語言的時候有格式控制符,例如 %s , %d , %c , %p 等等
在寫 golang 的時候,也是有對應(yīng)的格式控制符,也叫做占位符,寫這個占位符,需要有對應(yīng)的數(shù)據(jù)與之對應(yīng),不能瞎搞
基本常見常用的占位符
%s
%d
%v , %v+ , %+v
%T , %q
寫一個 demo 來看看上面占位符的效果,具體都是啥樣的
type?Animal?struct?{
?hobby?string
}
func?main()?{
?name?:=?"xiaomotong"
?age?:=?19
?hh?:=?Animal{"basketball"}
?fmt.Printf("name?=?%s?,?age?=?%d?,?hh?=?%v\n\n",?name,?age,?hh)
?fmt.Printf("hh?=?%+v?,?hh=?%#v\n\n",?hh,?hh)
?fmt.Printf("name?=?%T?,?age?=?%T?,?hh?=?%T\n\n",?name,?age,?hh)
????fmt.Printf("%q",?0x8989)
}
上面的代碼執(zhí)行效果如下:
?go?run?main.go
name?=?xiaomotong?,?age?=?19?,?hh?=?{basketball}
hh?=?{hobby:basketball}?,?hh=?main.Animal{hobby:"basketball"}
name?=?string?,?age?=?int?,?hh?=?main.Animal
'覉'
從上面的效果我們可以看出來:
%q 表示 單引號圍繞的字符字面值,由Go語法安全地轉(zhuǎn)義 , 感興趣的 xdm 可以嘗試打印調(diào)試看看效果
$s 表示 字符串
$d 表示 十進(jìn)制數(shù)
%v 表示 默認(rèn)格式
%+v 表示 ?打印結(jié)構(gòu)體的時候,會添加相應(yīng)的字段名字
%#v 表示 相應(yīng)數(shù)據(jù)結(jié)構(gòu)的 golang 語言的表示情況
較少使用的占位符
%t
%b
%c
%U , %#U
繼續(xù)寫 demo 查看一下效果幾何:
func?main()?{
?a?:=?true
?num?:=?88
?uni?:=?0x8989
?fmt.Printf("%t\n",?a)
?fmt.Printf("%b\n",?num)
?fmt.Printf("%c\n",?0x8989)
?fmt.Printf("uni?=?%U?,?uni?=?%#U\n",?uni,?uni)
}
上面的代碼執(zhí)行效果如下:
?go?run?main.go
true
1011000
覉
uni?=?U+8989?,?uni?=?U+8989?'覉'
從上面的效果我們可以看出來:
%t 表示 布爾的占位符
%b 表示 二進(jìn)制的數(shù)據(jù)
%c 表示 對應(yīng)的 Unicode 碼點所表示的字符
%U 表示 可以將數(shù)據(jù)轉(zhuǎn)化為 Unicode 格式規(guī)范 , 也就是 + 開頭的
%#U 表示 ?可以將數(shù)據(jù)轉(zhuǎn)換成 unicode 對應(yīng)的字符,demo 中的文字念 jī
進(jìn)制和浮點使用占位符
%2d , %07d
%x , %#x
%f , %.3f
func?main()?{
?num?:=?888
?fNum?:=?888.99
?fmt.Printf("num?=?%2d?,?num?=?%07d\n",?num,?num)
?fmt.Printf("num?=?%x?,?num?=?%#x\n",?num,?num)
?fmt.Printf("num?=?%f??,?num?=?%.3f\n",?fNum,?fNum)
}
上面的代碼執(zhí)行效果如下:
?go?run?main.go
num?=?888?,?num?=?0000888
num?=?378?,?num?=?0x378
num?=?888.990000??,?num?=?888.990
從上面的效果我們可以看出來:
%2d 表示 總共 2 位數(shù)字,若不足 2 位數(shù)字則前面補(bǔ)零
%07d 表示 總共 7 位數(shù)字,若不足 7 位數(shù)字則前面補(bǔ)零
%x 表示 十六進(jìn)制,全是小寫
%#x 表示 十六進(jìn)制,前面會帶上 0x
%f ?表示 浮點類型的數(shù)據(jù),默認(rèn)是保留 6 位小數(shù)
%.3f ?表示 浮點類型的數(shù)據(jù),保留 3 位小數(shù)
指針占位符
%p
%#p
func?main()?{
?ptr?:=?"xiaomotong"
?fmt.Printf("ptr?=?%p?,?ptr?=?%#p\n",?&ptr,?&ptr)
}
上面的代碼執(zhí)行效果如下:
?go?run?main.go
ptr?=?0xc42000e1e0?,?ptr?=?c42000e1e0
%p ?表示 十六進(jìn)制的指針地址,會帶有 0x
%#p ?表示 十六進(jìn)制的指針地址,不會有 0x
小知識,大挑戰(zhàn),占位符,一定還是可以用上的
歡迎點贊,關(guān)注,收藏
朋友們,你的支持和鼓勵,是我堅持分享,提高質(zhì)量的動力

好了,本次就到這里
常見技術(shù)是開放的,我們的心態(tài),更應(yīng)是開放的。擁抱變化,向陽而生,努力向前行。
我是阿兵云原生,歡迎點贊關(guān)注收藏,下次見~