欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang格式化輸出函數(shù)printf、sprintf、fprintf解讀

 更新時間:2025年07月03日 09:56:59   作者:ooshTinG  
這篇文章主要介紹了golang格式化輸出函數(shù)printf、sprintf、fprintf,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

筆記

因?yàn)樵趯W(xué)習(xí)C語言的時候,sprintf、fprintf這些就不是很清楚,在后面的go語言學(xué)習(xí),遇到了還是有些吃力,所以重新了解了一下

從定義、參數(shù)、返回值來比較三者的相似和不同,以此更好了解這三者分別適用的場景

printf

定義

printf 在 fmt 中是這樣定義的

// Printf formats according to a format specifier and writes to standard output.
// It returns the number of bytes written and any write error encountered.
func Printf(format string, a ...any) (n int, err error) {
	return Fprintf(os.Stdout, format, a...)
}
  • Printf 根據(jù)格式說明符設(shè)置格式并寫入標(biāo)準(zhǔn)輸出。
  • 它返回寫入的字節(jié)數(shù)n和遇到的任何寫入錯誤err(下面提到字節(jié)數(shù)和錯誤用n和err代替)。
  • 它的作用是將格式化的字符串輸出到標(biāo)準(zhǔn)輸出(一般是控制臺)

參數(shù)

它有兩個參數(shù),格式化字符串、需要格式化的變量

func main() {
	name := "haha"
	age := 18
	fmt.Printf("%s今年%d歲了\n", name, age) //haha今年18歲了
}

在這段代碼中," "中的內(nèi)容就是格式化的字符串,name和age就是需要格式化的變量。最后輸出 haha今年18歲了

返回值

字節(jié)數(shù)

  • 漢字占三個字節(jié),字母占1個字節(jié),換行符也要占一個字節(jié)
  • 為了測試占用的字節(jié)數(shù),我打印了下面幾句
	fmt.Println("----------------------------------")
	a, o := fmt.Printf("哈")
	fmt.Println() //打印空行 好觀察
	fmt.Println(a, o)

	a1, o1 := fmt.Printf("哈\n")
	fmt.Println(a1, o1)

	a11, o11 := fmt.Printf("哈\n\n")
	fmt.Println(a11, o11)

	a2, o2 := fmt.Printf("abc")
	fmt.Println()
	fmt.Println(a2, o2)

	a3, o3 := fmt.Printf("%s", "abc")
	fmt.Println()
	fmt.Println(a3, o3)

結(jié)果是

在這里插入圖片描述

但是向標(biāo)準(zhǔn)輸出(os.Stdout)打印時是可以省略返回值的,這是因?yàn)?/p>

默認(rèn)情況下,Printf 輸出到終端屏幕時極少失敗,通??梢院雎苑祷刂?/p>

所以我們一般不理會返回值

錯誤:

  • 如果寫入成功,錯誤值為nil;
  • 如果寫入失敗,錯誤值是寫入過程中的錯誤。

sprintf

定義

// Sprintf formats according to a format specifier and returns the resulting string.
func Sprintf(format string, a ...any) string {
	p := newPrinter()
	p.doPrintf(format, a)
	s := string(p.buf)
	p.free()
	return s
}

Sprintf 根據(jù)格式說明符設(shè)置格式并返回結(jié)果字符串。

它的作用是將格式化的字符串輸出到字符串中;

參數(shù)

與 printf 類似,sprintf 也有兩個參數(shù):格式化字符串、需要格式化的變量

使用時的寫法也和 printf 一樣

返回值

sprintf 的返回值是 string 類型的,需要用一個string類型的變量來保存格式化后的字符串

	name := "aabb"
	age := 18

	s := fmt.Sprintf("%s今年%d歲了", name, age)
	fmt.Println(s)    //aabb今年18歲了

s接收 sprintf 的返回值

最后打印出 aabb今年18歲了

fprintf

定義

// Fprintf formats according to a format specifier and writes to w.
// It returns the number of bytes written and any write error encountered.
func Fprintf(w io.Writer, format string, a ...any) (n int, err error) {
	p := newPrinter()
	p.doPrintf(format, a)
	n, err = w.Write(p.buf)
	p.free()
	return
}
  • Fprintf 根據(jù)格式說明符進(jìn)行格式化并寫入 w。
  • 它返回寫入的字節(jié)數(shù)和遇到的任何寫入錯誤。

它的作用是將格式化后的字符串輸出到指定的io.Writer接口實(shí)現(xiàn)對象中(常見的是將內(nèi)容寫入文件)

在go語言中,io.Writer是go語言標(biāo)準(zhǔn)庫io包中定義的內(nèi)置接口,定義如下

	type Writer interface {
		Write(p []byte) (n int, err error)
	}

參數(shù)

fprintf 有三個參數(shù)

w是實(shí)現(xiàn)io.Writer接口的對象,是指定數(shù)據(jù)寫入的目標(biāo)位置。拿文件來舉例,也就是接收數(shù)據(jù)的文件

另外兩個是 格式化字符串、需要格式化的變量,和 printf、sprintf一樣

返回值

兩個返回值,寫入的字節(jié)數(shù)和遇到的任何寫入錯誤和 printf 一樣

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Golang通脈之map詳情

    Golang通脈之map詳情

    這篇文章主要介紹了Golang通脈之map,Go語言中提供的映射關(guān)系容器為map,其內(nèi)部使用散列表(hash)實(shí)現(xiàn),map 是一種無序的鍵值對的集合。map 最重要的一點(diǎn)是通過 key 來快速檢索數(shù)據(jù),key 類似于索引,指向數(shù)據(jù)的值 map 是一種集合,所以可以像迭代數(shù)組和切片那樣迭代它
    2021-10-10
  • go語言的變量定義示例詳解

    go語言的變量定義示例詳解

    這篇文章主要為大家介紹了go語言的變量定義示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go語言如何實(shí)現(xiàn)將[][]byte轉(zhuǎn)為io.Reader

    Go語言如何實(shí)現(xiàn)將[][]byte轉(zhuǎn)為io.Reader

    本文主要介紹了如何在Go語言中實(shí)現(xiàn)將[][]byte轉(zhuǎn)換為io.Reader,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2025-02-02
  • Go?語言sort?中的sortInts?方法

    Go?語言sort?中的sortInts?方法

    這篇文章主要介紹了Go?語言sort?中的sortInts?方法,Go?的?sort?包實(shí)現(xiàn)了內(nèi)置和用戶定義類型的排序。我們將首先查看內(nèi)置函數(shù)的排序,西瓦嗯更多相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • Go語言對接微信支付與退款指南(示例詳解)

    Go語言對接微信支付與退款指南(示例詳解)

    在互聯(lián)網(wǎng)技術(shù)日益發(fā)展的背景下,Go語言憑借并發(fā)處理能力,在后端開發(fā)中大放異彩,本文詳細(xì)介紹如何使用Go語言對接微信支付,完成支付和退款功能,包括準(zhǔn)備工作、初始化微信支付客戶端、實(shí)現(xiàn)支付功能,以及處理支付回調(diào)和退款等
    2024-10-10
  • go語言的工作空間和GOPATH環(huán)境變量介紹

    go語言的工作空間和GOPATH環(huán)境變量介紹

    這篇文章主要介紹了go語言的工作空間和GOPATH環(huán)境變量介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • GoFrame?ORM原生方法操作示例

    GoFrame?ORM原生方法操作示例

    這篇文章主要為大家介紹了GoFrame?ORM原生方法操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go語言中基本數(shù)據(jù)類型的相互轉(zhuǎn)換詳解

    Go語言中基本數(shù)據(jù)類型的相互轉(zhuǎn)換詳解

    Go在不同類型的變量之間賦值時需要顯示轉(zhuǎn)換,不能自動轉(zhuǎn)換。這篇文章主要和大家介紹了Go語言中基本數(shù)據(jù)類型的相互轉(zhuǎn)換,感興趣的小伙伴可以了解一下
    2022-10-10
  • Go語言通過TCP協(xié)議實(shí)現(xiàn)聊天室功能

    Go語言通過TCP協(xié)議實(shí)現(xiàn)聊天室功能

    這篇文章主要為大家詳細(xì)介紹了Go語言中如何通過TCP協(xié)議實(shí)現(xiàn)聊天室功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • golang順時針打印矩陣的方法示例

    golang順時針打印矩陣的方法示例

    這篇文章主要介紹了golang順時針打印矩陣的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01

最新評論