最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go使用fmt包輸出與格式化核心庫(kù)的完整指南

 更新時(shí)間:2026年03月23日 08:30:02   作者:程序員愛釣魚  
在 Go 語言中,fmt 是最基礎(chǔ)也是使用頻率最高的標(biāo)準(zhǔn)庫(kù)之一,幾乎每一個(gè) Go 程序都會(huì)用到它,下面小編就和大家詳細(xì)介紹一下fmt包的具體使用吧

在 Go 語言中,fmt 是最基礎(chǔ)也是使用頻率最高的標(biāo)準(zhǔn)庫(kù)之一。幾乎每一個(gè) Go 程序都會(huì)用到它,無論是打印調(diào)試信息、格式化字符串、構(gòu)建日志,還是從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)。fmt 的核心作用可以用一句話概括:提供統(tǒng)一、強(qiáng)大的格式化輸入輸出能力

與很多語言不同,Go 沒有復(fù)雜的字符串拼接語法,而是通過 fmt 來完成大部分輸出和字符串構(gòu)建工作。這種設(shè)計(jì)讓代碼更加清晰,也更容易維護(hù)。

在日常開發(fā)中,最常用的是輸出函數(shù)。fmt.Print() 用于直接輸出內(nèi)容,不會(huì)自動(dòng)換行,適合連續(xù)拼接輸出。

fmt.Print("Hello ")
fmt.Print("Go")

輸出結(jié)果:

Hello Go

如果希望自動(dòng)換行,可以使用 fmt.Println()。它不僅會(huì)在末尾加換行,還會(huì)在多個(gè)參數(shù)之間自動(dòng)加空格,這是開發(fā)中最常用的打印方式。

fmt.Println("Hello", "Go")

輸出:

Hello Go

當(dāng)需要更精細(xì)的控制時(shí),就要使用 fmt.Printf()。這個(gè)函數(shù)支持格式化字符串,通過占位符控制輸出格式。

name := "Alice"
age := 25

fmt.Printf("name: %s age: %d\n", name, age)

輸出:

name: Alice age: 25

Printf 的核心是格式化占位符,常見的包括:

  • %s  字符串
  • %d  整數(shù)
  • %f  浮點(diǎn)數(shù)
  • %t  布爾值
  • %v  默認(rèn)格式
  • %T  類型

其中 %v 是最常用的,它可以自動(dòng)匹配變量類型并輸出內(nèi)容,而 %T 則用于調(diào)試變量類型。

除了輸出到終端,fmt 還可以生成字符串。fmt.Sprintf() 是一個(gè)非常重要的函數(shù),它不會(huì)打印內(nèi)容,而是返回格式化后的字符串。

msg := fmt.Sprintf("user=%s id=%d", "bob", 1001)
fmt.Println(msg)

輸出:

user=bob id=1001

這個(gè)函數(shù)在構(gòu)建日志、拼接 SQL、生成 URL 時(shí)非常常見。

如果需要寫入文件或網(wǎng)絡(luò)連接,可以使用 fmt.Fprintf(),它允許把輸出寫入任意實(shí)現(xiàn)了 io.Writer 接口的對(duì)象。

file, _ := os.Create("log.txt")
fmt.Fprintf(file, "log: %s\n", "start")

在調(diào)試結(jié)構(gòu)體時(shí),fmt 提供了更強(qiáng)大的格式化能力。例如:

type User struct {
	Name string
	Age  int
}

u := User{"Tom", 30}

fmt.Printf("%v\n", u)
fmt.Printf("%+v\n", u)
fmt.Printf("%#v\n", u)

輸出分別是:

{Tom 30}
{Name:Tom Age:30}
main.User{Name:"Tom", Age:30}

可以看到:

%v 輸出值 %+v 帶字段名 %#v 輸出 Go 語法格式

在調(diào)試復(fù)雜結(jié)構(gòu)時(shí)非常有用。

fmt 還支持對(duì)輸出格式進(jìn)行精細(xì)控制,例如控制寬度和精度。最常見的就是控制浮點(diǎn)數(shù)的小數(shù)位數(shù)。

price := 19.999
fmt.Printf("%.2f\n", price)

輸出:

20.00

還可以控制對(duì)齊方式:

fmt.Printf("%10d\n", 100)   // 右對(duì)齊
fmt.Printf("%-10d\n", 100)  // 左對(duì)齊

這種能力在構(gòu)建表格輸出或 CLI 工具時(shí)非常實(shí)用。

除了輸出,fmt 也提供了輸入能力。fmt.Scan() 可以從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)。

var name string
fmt.Scan(&name)

fmt.Println("hello", name)

用戶輸入:

Alice

輸出:

hello Alice

如果需要按行讀取,可以使用 fmt.Scanln();如果需要按格式解析輸入,可以使用 fmt.Scanf()

var name string
var age int

fmt.Scanf("%s %d", &name, &age)

輸入:

Tom 18

程序會(huì)自動(dòng)解析為兩個(gè)變量。

在實(shí)際開發(fā)中,fmt 常見的使用方式包括:打印調(diào)試信息、構(gòu)建日志字符串、生成格式化文本、CLI 輸出以及簡(jiǎn)單的輸入處理。雖然在高性能場(chǎng)景中(例如日志系統(tǒng))可能會(huì)用更專業(yè)的庫(kù)替代,但在絕大多數(shù)場(chǎng)景下,fmt 已經(jīng)足夠使用。

需要注意的是,fmt 的格式化功能是有一定性能開銷的,因?yàn)樗枰馕龈袷阶址?。如果是在高頻調(diào)用的性能敏感場(chǎng)景,可以考慮使用字符串拼接或 strconv 來優(yōu)化。

從整體來看,fmt 是 Go 標(biāo)準(zhǔn)庫(kù)中最基礎(chǔ)也是最重要的工具之一。它統(tǒng)一了輸出、格式化和輸入處理方式,讓開發(fā)者可以用簡(jiǎn)單直觀的方式操作數(shù)據(jù)。無論是初學(xué)者還是高級(jí)開發(fā)者,都會(huì)頻繁使用這個(gè)包。

掌握 fmt 的關(guān)鍵在于熟悉常用函數(shù)(Print、Println、Printf、Sprintf)以及格式化占位符。一旦熟練使用,你會(huì)發(fā)現(xiàn) Go 的輸出與字符串處理會(huì)變得非常高效和優(yōu)雅。

到此這篇關(guān)于Go使用fmt包輸出與格式化核心庫(kù)的完整指南的文章就介紹到這了,更多相關(guān)Go fmt包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang利用unsafe操作未導(dǎo)出變量-Pointer使用詳解

    golang利用unsafe操作未導(dǎo)出變量-Pointer使用詳解

    這篇文章主要給大家介紹了關(guān)于golang利用unsafe操作未導(dǎo)出變量-Pointer使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 使用Go語言實(shí)現(xiàn)向文件寫入內(nèi)容的示例代碼

    使用Go語言實(shí)現(xiàn)向文件寫入內(nèi)容的示例代碼

    向文件寫入內(nèi)容 的完整內(nèi)容,這是文件操作的另一個(gè)核心技能,與讀取配套,適用于日志記錄、生成報(bào)告、寫配置等場(chǎng)景,本文通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2025-07-07
  • 使用Go語言創(chuàng)建WebSocket服務(wù)的實(shí)現(xiàn)示例

    使用Go語言創(chuàng)建WebSocket服務(wù)的實(shí)現(xiàn)示例

    這篇文章主要介紹了使用Go語言創(chuàng)建WebSocket服務(wù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 實(shí)現(xiàn)像php一樣方便的go ORM數(shù)據(jù)庫(kù)操作示例詳解

    實(shí)現(xiàn)像php一樣方便的go ORM數(shù)據(jù)庫(kù)操作示例詳解

    這篇文章主要為大家介紹了實(shí)現(xiàn)像php一樣方便的go ORM數(shù)據(jù)庫(kù)操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go語言中Serverless實(shí)戰(zhàn)

    Go語言中Serverless實(shí)戰(zhàn)

    本文主要介紹了Go語言中Serverless實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • golang官方嵌入文件到可執(zhí)行程序的示例詳解

    golang官方嵌入文件到可執(zhí)行程序的示例詳解

    這篇文章主要介紹了golang官方嵌入文件到可執(zhí)行程序,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 詳解Golang time包中的結(jié)構(gòu)體time.Ticker

    詳解Golang time包中的結(jié)構(gòu)體time.Ticker

    在日常開發(fā)過程中,會(huì)頻繁遇到對(duì)時(shí)間進(jìn)行操作的場(chǎng)景,使用 Golang 中的 time 包可以很方便地實(shí)現(xiàn)對(duì)時(shí)間的相關(guān)操作,接下來的幾篇文章會(huì)詳細(xì)講解 time 包,本文講解一下 time 包中的結(jié)構(gòu)體 time.Ticker,需要的朋友可以參考下
    2023-08-08
  • Go使用Gin寫一個(gè)對(duì)MySQL的增刪改查的實(shí)現(xiàn)

    Go使用Gin寫一個(gè)對(duì)MySQL的增刪改查的實(shí)現(xiàn)

    本文主要介紹了使用Go語言結(jié)合Gin和GORM框架創(chuàng)建users表,實(shí)現(xiàn)增刪查接口,配置mysql依賴并啟動(dòng)服務(wù)測(cè)試數(shù)據(jù)操作,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-07-07
  • GO語言異常處理機(jī)制panic和recover分析

    GO語言異常處理機(jī)制panic和recover分析

    這篇文章主要介紹了GO語言異常處理機(jī)制panic和recover,分析了捕獲運(yùn)行時(shí)發(fā)生錯(cuò)誤的方法,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12
  • go語言制作的zip壓縮程序

    go語言制作的zip壓縮程序

    這篇文章主要介紹了go語言制作的zip壓縮程序,其主體思路是首先創(chuàng)建一個(gè)讀寫緩沖,然后用壓縮器包裝該緩沖,用Walk方法來將所有目錄下的文件寫入zip,有需要的小伙伴參考下。
    2015-03-03

最新評(píng)論

苍南县| 常山县| 东乌珠穆沁旗| 扬中市| 濉溪县| 浦东新区| 象山县| 宜兰市| 台山市| 霞浦县| 宝鸡市| 仙游县| 伊金霍洛旗| 西安市| 同江市| 会同县| 台南县| 招远市| 寻甸| 信宜市| 如东县| 定安县| 辛集市| 抚松县| 威海市| 达拉特旗| 台中县| 若羌县| 肥东县| 武夷山市| 遵义县| 米泉市| 丰宁| 阜新市| 农安县| 海宁市| 盘山县| 天长市| 安义县| 长岭县| 宣武区|