Go語(yǔ)言fmt模塊的完整方法詳解及示例代碼
前言
以下是 Go 語(yǔ)言 fmt
模塊的完整方法詳解及示例,涵蓋所有核心功能:
一、輸出函數(shù)
將數(shù)據(jù)寫(xiě)入標(biāo)準(zhǔn)輸出、文件或字符串。
1. Print / Println / Printf
功能
Print
: 寫(xiě)入標(biāo)準(zhǔn)輸出,不換行。Println
: 寫(xiě)入標(biāo)準(zhǔn)輸出并換行。Printf
: 格式化寫(xiě)入標(biāo)準(zhǔn)輸出。
示例
fmt.Print("Hello, ") // 輸出:Hello, fmt.Println("World!") // 輸出:World!(換行) fmt.Printf("%s %d\n", "Year:", 2023) // 輸出:Year: 2023(換行)
2. Fprint / Fprintln / Fprintf
功能
將內(nèi)容寫(xiě)入指定的 io.Writer
(如文件、網(wǎng)絡(luò)連接)。
示例
file, _ := os.Create("output.txt") fmt.Fprint(file, "Hello ") // 寫(xiě)入文件內(nèi)容:Hello fmt.Fprintln(file, "World!") // 寫(xiě)入文件內(nèi)容:World!(換行) fmt.Fprintf(file, "Value: %d", 100) // 寫(xiě)入文件內(nèi)容:Value: 100
3. Sprint / Sprintln / Sprintf
功能
將內(nèi)容格式化為字符串并返回。
示例
s1 := fmt.Sprint("Hello", 123) // s1 = "Hello123" s2 := fmt.Sprintln("World!") // s2 = "World!\n" s3 := fmt.Sprintf("Value: %d", 100) // s3 = "Value: 100"
二、輸入函數(shù)
從標(biāo)準(zhǔn)輸入、文件或字符串讀取數(shù)據(jù)。
1. Scan / Scanln / Scanf
功能
Scan
: 從標(biāo)準(zhǔn)輸入讀取,以空格分隔。Scanln
: 讀取到換行符停止。Scanf
: 按格式字符串讀取。
示例
var a int var b string // 輸入:10 ABC fmt.Scan(&a, &b) // a=10, b="ABC" // 輸入:20 XYZ\n fmt.Scanln(&a, &b) // a=20, b="XYZ" // 輸入:Number: 30 fmt.Scanf("Number: %d", &a) // a=30
2. Fscan / Fscanln / Fscanf
功能
從指定的 io.Reader
(如文件)讀取數(shù)據(jù)。
示例
file, _ := os.Open("data.txt") var x int var y string // 文件內(nèi)容:100 Golang fmt.Fscan(file, &x, &y) // x=100, y="Golang" // 文件內(nèi)容:200 Rust\n fmt.Fscanln(file, &x, &y) // x=200, y="Rust" // 文件內(nèi)容:Value: 300 fmt.Fscanf(file, "Value: %d", &x) // x=300
3. Sscan / Sscanln / Sscanf
功能
從字符串解析數(shù)據(jù)。
示例
str := "404 Not Found" var code int var msg string fmt.Sscan(str, &code, &msg) // code=404, msg="Not" fmt.Sscanln("500 Error\n", &code, &msg) // code=500, msg="Error" fmt.Sscanf("Status: 200 OK", "Status: %d %s", &code, &msg) // code=200, msg="OK"
三、格式化動(dòng)詞
常用格式化占位符(部分):
動(dòng)詞 | 說(shuō)明 | 示例 |
---|---|---|
%v | 默認(rèn)格式 | %v → {Alice 30} |
%d | 十進(jìn)制整數(shù) | %d → 25 |
%f | 浮點(diǎn)數(shù) | %f → 3.141593 |
%s | 字符串 | %s → “hello” |
%t | 布爾值 | %t → true |
%p | 指針地址 | %p → 0xc0000a |
%T | 類(lèi)型 | %T → int |
四、其他功能
1. Errorf
功能
生成格式化錯(cuò)誤。
示例
err := fmt.Errorf("無(wú)效的用戶(hù)ID: %d", -1) // err.Error() = "無(wú)效的用戶(hù)ID: -1"
2. Formatter 和 Stringer 接口
功能
自定義類(lèi)型的格式化行為。
示例
type User struct { Name string Age int } // 實(shí)現(xiàn) Stringer 接口 func (u User) String() string { return fmt.Sprintf("%s (%d歲)", u.Name, u.Age) } // 實(shí)現(xiàn) Formatter 接口 func (u User) Format(f fmt.State, verb rune) { if verb == 'v' { fmt.Fprintf(f, "User{Name:%s, Age:%d}", u.Name, u.Age) } } u := User{"Bob", 30} fmt.Println(u) // 輸出:Bob (30歲) fmt.Printf("%v", u) // 輸出:User{Name:Bob, Age:30}
五、注意事項(xiàng)
- 錯(cuò)誤處理:
Scan
系列函數(shù)返回成功解析的項(xiàng)數(shù)和錯(cuò)誤。n, err := fmt.Scan(&a, &b) if err != nil { log.Fatal("輸入錯(cuò)誤:", err) }
- 性能:頻繁字符串拼接時(shí),優(yōu)先使用
strings.Builder
而非Sprintf
。
六、完整函數(shù)列表
函數(shù)簽名 | 功能說(shuō)明 |
---|---|
Print(a ...any) (n int, err error) | 標(biāo)準(zhǔn)輸出 |
Println(a ...any) (n int, err error) | 標(biāo)準(zhǔn)輸出并換行 |
Printf(format string, a ...any) (n int, err error) | 格式化輸出 |
Fprint(w io.Writer, a ...any) (n int, err error) | 寫(xiě)入 io.Writer |
Sprint(a ...any) string | 返回格式化字符串 |
Errorf(format string, a ...any) error | 生成格式化錯(cuò)誤 |
通過(guò)掌握 fmt
包的方法,可以高效處理輸入輸出、字符串格式化及錯(cuò)誤生成。
到此這篇關(guān)于Go語(yǔ)言fmt模塊的文章就介紹到這了,更多相關(guān)Go語(yǔ)言fmt模塊詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語(yǔ)言中TCP/IP網(wǎng)絡(luò)編程的深入講解
這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言中TCP/IP網(wǎng)絡(luò)編程的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05go語(yǔ)言執(zhí)行等待直到后臺(tái)goroutine執(zhí)行完成實(shí)例分析
這篇文章主要介紹了go語(yǔ)言執(zhí)行等待直到后臺(tái)goroutine執(zhí)行完成的方法,實(shí)例分析了Go語(yǔ)言中WaitGroup的使用技巧,需要的朋友可以參考下2015-03-03go語(yǔ)言基礎(chǔ) seek光標(biāo)位置os包的使用
這篇文章主要介紹了go語(yǔ)言基礎(chǔ) seek光標(biāo)位置os包的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05go gin+token(JWT)驗(yàn)證實(shí)現(xiàn)登陸驗(yàn)證
本文主要介紹了go gin+token(JWT)驗(yàn)證實(shí)現(xiàn)登陸驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Linux系統(tǒng)下Go語(yǔ)言開(kāi)發(fā)環(huán)境搭建
這篇文章主要介紹了Linux系統(tǒng)下Go開(kāi)發(fā)環(huán)境搭建,需要的朋友可以參考下2022-04-04Go設(shè)計(jì)模式之訪(fǎng)問(wèn)者模式講解和代碼示例
訪(fǎng)問(wèn)者是一種行為設(shè)計(jì)模式, 允許你在不修改已有代碼的情況下向已有類(lèi)層次結(jié)構(gòu)中增加新的行為,本文將通過(guò)代碼示例給大家詳細(xì)的介紹一下Go設(shè)計(jì)模式之訪(fǎng)問(wèn)者模式,需要的朋友可以參考下2023-08-08Go?對(duì)多個(gè)網(wǎng)絡(luò)命令空間中的端口進(jìn)行監(jiān)聽(tīng)的解決方案
這篇文章主要介紹了Go?如何對(duì)多個(gè)網(wǎng)絡(luò)命令空間中的端口進(jìn)行監(jiān)聽(tīng),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07golang接收post和get請(qǐng)求參數(shù)處理
本文主要介紹了golang接收post和get請(qǐng)求參數(shù)處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03