Go語(yǔ)言中的格式化輸出占位符的用法詳解
在 Go 語(yǔ)言中,格式化輸出是一個(gè)非常常用的功能,特別是在處理字符串、數(shù)字和其他數(shù)據(jù)類(lèi)型時(shí)。Go 提供了豐富的格式化選項(xiàng),通過(guò)占位符來(lái)控制輸出的格式。本文將詳細(xì)介紹 Go 語(yǔ)言中常用的格式化占位符及其用法。
基本格式化函數(shù)
Go 語(yǔ)言提供了幾個(gè)內(nèi)置的格式化函數(shù),這些函數(shù)主要位于 fmt
包和 log
包中:
fmt 包
fmt.Printf(format string, a ...interface{})
:格式化輸出到標(biāo)準(zhǔn)輸出。
fmt.Sprintf(format string, a ...interface{})
:格式化輸出到字符串。
fmt.Fprintf(w io.Writer, format string, a ...interface{})
:格式化輸出到 io.Writer
。
log 包
log.Printf(format string, v ...interface{})
:格式化輸出到日志。
常用的格式化占位符
字符串格式化
占位符 | 描述 | 示例 |
---|---|---|
%s | 格式化字符串 | fmt.Printf("%s", "Hello") |
%q | 格式化字符串,用雙引號(hào)包圍 | fmt.Printf("%q", "Hello") |
數(shù)字格式化
整數(shù)
占位符 | 描述 | 示例 |
---|---|---|
%d | 十進(jìn)制整數(shù) | fmt.Printf("%d", 123) |
%b | 二進(jìn)制整數(shù) | fmt.Printf("%b", 123) |
%o | 八進(jìn)制整數(shù) | fmt.Printf("%o", 123) |
%x | 十六進(jìn)制整數(shù)(小寫(xiě)字母) | fmt.Printf("%x", 123) |
%X | 十六進(jìn)制整數(shù)(大寫(xiě)字母) | fmt.Printf("%X", 123) |
%c | ASCII 碼對(duì)應(yīng)的字符 | fmt.Printf("%c", 65) |
%U | Unicode 碼點(diǎn) | fmt.Printf("%U", 'A') |
浮點(diǎn)數(shù)
占位符 | 描述 | 示例 |
---|---|---|
%f | 浮點(diǎn)數(shù) | fmt.Printf("%f", 123.456) |
%e | 科學(xué)記數(shù)法(小寫(xiě)字母 e) | fmt.Printf("%e", 123.456) |
%E | 科學(xué)記數(shù)法(大寫(xiě)字母 E) | fmt.Printf("%E", 123.456) |
%g | 根據(jù)值的大小選擇 %e 或 %f | fmt.Printf("%g", 123.456) |
%G | 根據(jù)值的大小選擇 %E 或 %f | fmt.Printf("%G", 123.456) |
布爾值
占位符 | 描述 | 示例 |
---|---|---|
%t | 布爾值 | fmt.Printf("%t", true) |
其他類(lèi)型
占位符 | 描述 | 示例 |
---|---|---|
%p | 指針地址 | fmt.Printf("%p", &value) |
%T | 類(lèi)型名稱(chēng) | fmt.Printf("%T", value) |
特殊格式化
占位符 | 描述 | 示例 |
---|---|---|
%v | 格式化任何值,默認(rèn)格式 | fmt.Printf("%v", "Hello") |
%+v | 格式化任何值,包含結(jié)構(gòu)體字段 | fmt.Printf("%+v", struct{ Name string }{"Alice"}) |
%#v | 格式化任何值,Go 語(yǔ)法格式 | fmt.Printf("%#v", "Hello") |
自定義寬度和精度
占位符 | 描述 | 示例 |
---|---|---|
%wd | 設(shè)置最小寬度,不足部分用空格填充 | fmt.Printf("%5d", 123) |
%0wd | 設(shè)置最小寬度,不足部分用零填充 | fmt.Printf("%05d", 123) |
%wf | 設(shè)置浮點(diǎn)數(shù)的小數(shù)位數(shù) | fmt.Printf("%.2f", 123.456) |
對(duì)齊方式
占位符 | 描述 | 示例 |
---|---|---|
%-w | 左對(duì)齊 | fmt.Printf("%-5d", 123) |
%+w | 右對(duì)齊(默認(rèn)) | fmt.Printf("%+5d", 123) |
示例代碼
fmt 包示例
package main import ( "fmt" ) func main() { // 字符串格式化 fmt.Printf("String: %s\n", "Hello") fmt.Printf("Quoted String: %q\n", "Hello") // 數(shù)字格式化 fmt.Printf("Decimal: %d\n", 123) fmt.Printf("Binary: %b\n", 123) fmt.Printf("Octal: %o\n", 123) fmt.Printf("Hexadecimal (lower): %x\n", 123) fmt.Printf("Hexadecimal (upper): %X\n", 123) fmt.Printf("Character: %c\n", 65) fmt.Printf("Unicode: %U\n", 'A') // 浮點(diǎn)數(shù)格式化 fmt.Printf("Float: %f\n", 123.456) fmt.Printf("Scientific (lower): %e\n", 123.456) fmt.Printf("Scientific (upper): %E\n", 123.456) fmt.Printf("General (lower): %g\n", 123.456) fmt.Printf("General (upper): %G\n", 123.456) // 布爾值格式化 fmt.Printf("Boolean: %t\n", true) // 指針地址格式化 var value int = 123 fmt.Printf("Pointer: %p\n", &value) // 類(lèi)型名稱(chēng)格式化 fmt.Printf("Type: %T\n", value) // 特殊格式化 fmt.Printf("Default Format: %v\n", "Hello") fmt.Printf("Struct Fields: %+v\n", struct{ Name string }{"Alice"}) fmt.Printf("Go Syntax: %#v\n", "Hello") // 自定義寬度和精度 fmt.Printf("Width: %5d\n", 123) fmt.Printf("Zero-Padded Width: %05d\n", 123) fmt.Printf("Precision: %.2f\n", 123.456) // 對(duì)齊方式 fmt.Printf("Left-Aligned: %-5d\n", 123) fmt.Printf("Right-Aligned: %+5d\n", 123) }
log 包示例
package main import ( "log" ) func main() { log.Printf("Log Message: %s", "Hello") }
以上就是Go語(yǔ)言中的格式化輸出占位符的用法詳解的詳細(xì)內(nèi)容,更多關(guān)于Go格式化輸出占位符的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
go語(yǔ)言中切片的長(zhǎng)度和容量的區(qū)別
這篇文章主要介紹了go語(yǔ)言中切片的長(zhǎng)度和容量的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04理解Golang中的數(shù)組(array)、切片(slice)和map
這篇文章主要介紹了理解Golang中的數(shù)組(array)、切片(slice)和map,本文先是給出代碼,然后一一分解,并給出一張內(nèi)圖加深理解,需要的朋友可以參考下2014-10-10golang常用庫(kù)之操作數(shù)據(jù)庫(kù)的orm框架-gorm基本使用詳解
這篇文章主要介紹了golang常用庫(kù)之操作數(shù)據(jù)庫(kù)的orm框架-gorm基本使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10go 對(duì)象池化組件 bytebufferpool使用詳解
這篇文章主要為大家介紹了go 對(duì)象池化組件 bytebufferpool使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10golang使用grpc+go-kit模擬oauth認(rèn)證的操作
這篇文章主要介紹了golang使用grpc+go-kit模擬oauth認(rèn)證的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04Golang定時(shí)器Timer與Ticker的使用詳解
在 Go 里有很多種定時(shí)器的使用方法,像常規(guī)的 Timer、Ticker 對(duì)象,本文主要為大家介紹了Timer與Ticker的使用,感興趣的小伙伴可以了解一下2023-05-05golang 并發(fā)安全Map以及分段鎖的實(shí)現(xiàn)方法
這篇文章主要介紹了golang 并發(fā)安全Map以及分段鎖的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03GO比較兩個(gè)對(duì)象是否相同實(shí)戰(zhàn)案例
我們時(shí)常有比較兩個(gè)值是否相等的需求,下面這篇文章主要給大家介紹了關(guān)于GO比較兩個(gè)對(duì)象是否相同的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12使用GO實(shí)現(xiàn)Paxos共識(shí)算法的方法
這篇文章主要介紹了使用GO實(shí)現(xiàn)Paxos共識(shí)算法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09