亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

筆記

因為在學習C語言的時候,sprintf、fprintf這些就不是很清楚,在后面的go語言學習,遇到了還是有些吃力,所以重新了解了一下

從定義、參數(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ù)格式說明符設置格式并寫入標準輸出。
  • 它返回寫入的字節(jié)數(shù)n和遇到的任何寫入錯誤err(下面提到字節(jié)數(shù)和錯誤用n和err代替)。
  • 它的作用是將格式化的字符串輸出到標準輸出(一般是控制臺)

參數(shù)

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

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

在這段代碼中," "中的內容就是格式化的字符串,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)

結果是

在這里插入圖片描述

但是向標準輸出(os.Stdout)打印時是可以省略返回值的,這是因為

默認情況下,Printf 輸出到終端屏幕時極少失敗,通常可以忽略返回值

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

錯誤:

  • 如果寫入成功,錯誤值為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ù)

與 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ù)格式說明符進行格式化并寫入 w。
  • 它返回寫入的字節(jié)數(shù)和遇到的任何寫入錯誤。

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

在go語言中,io.Writer是go語言標準庫io包中定義的內置接口,定義如下

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

參數(shù)

fprintf 有三個參數(shù)

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

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

返回值

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

總結

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

相關文章

  • Golang通脈之map詳情

    Golang通脈之map詳情

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

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

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

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

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

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

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

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

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

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

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

    GoFrame?ORM原生方法操作示例

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

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

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

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

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

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

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

最新評論