Go語言標準輸入輸出庫的基本使用教程
fmt
fmt是go語言中的格式化輸入輸出庫,其中主要分為兩個部分,分別是輸出部分和輸入部分。
輸出
Print函數(shù)的主要功能是輸出,和Print類似的函數(shù)有以下幾個:
func Print(a ...interface{}) (n int, err error):直接輸出func Println(a ...interface{}) (n int, err error):和Print使用方法一樣,但是不同與Print的是Println在每次打印完成之后會自動換行,如果使用Print想要換行需要在結(jié)尾加上\n。func Printf(format string, a ...interface{}) (n int, err error):支持格式化輸出字符串,在使用Printf時,可以在函數(shù)中使用格式化字符串占位。
代碼示例:
func main() {
a := "Lee"
fmt.Print("大家好,")
fmt.Printf("我是:%s \n",a)
fmt.Println("我在學習Go語言")
}運行結(jié)果:

常用占位符:
- %d:整形十進制占位符
- %b:整形二進制占位符
- %o:整形八進制占位符
- %x:整形十六進制占位符,其中a到f為小寫
- %X:整形十六進制占位符,其中A到F為大寫
- %s:字符串占位符
- %f:浮點數(shù)占位符
- %e:浮點數(shù)科學計數(shù)法:例如:1.234e+10
- %E:浮點數(shù)科學計數(shù)法:例如:1.234E+10
- %t:布爾類型占位符
- %p:指針,十六進制表示,并加上0x前綴
Fprint
Fprint系列函數(shù)同樣有以下三個,該函數(shù)會將內(nèi)容輸出到io.Writer接口類型的變量w中,通常用于朝文件中寫入數(shù)據(jù)。
func Fprint(w io.Writer, a ...interface{}) (n int, err error)func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)func Fprintln(w io.Writer, a ...interface{}) (n int, err error)
代碼示例:
func main() {
file, err := os.OpenFile("D://test/a.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
fmt.Println("打開文件出錯:", err)
return
}
name := "lee"
age := 23
// 向文件中寫入數(shù)據(jù)
fmt.Fprintf(file, "姓名:%s,年齡:%d \n", name, age)
// 向控制臺寫入數(shù)據(jù)
fmt.Fprintf(os.Stdout, "寫入成功")
}運行結(jié)果:


以上代碼成功將內(nèi)容寫入到了a.txt文件中。
Sprint
Sprint會將傳入的內(nèi)容格式化成一個字符串并返回,和Sprint類似的函數(shù)有以下幾個:
func Sprint(a ...interface{}) string:直接返回func Sprintf(format string, a ...interface{}) string:格式化返回func Sprintln(a ...interface{}) string:自動換行放回
代碼示例:
func main() {
a := "Lee"
s1 := fmt.Sprint("直接返回")
s2 := fmt.Sprintln("自動換行返回")
s3 := fmt.Sprintf("格式化返回:%s", a)
fmt.Print(s1)
fmt.Print(s2)
fmt.Print(s3)
}運行結(jié)果:

Errorf
Errorf是根據(jù)傳入的內(nèi)容格式化后返回一個包含該字符串的error。
func Errorf(format string, a ...interface{}) error 代碼示例:
func main() {
a := "error"
error := fmt.Errorf("錯誤:%s", a)
fmt.Print(error)
}運行結(jié)果:

輸入
在go語言中獲取控制臺輸入可以使用以下幾個函數(shù):
func Scan(a ...interface{}) (n int, err error)
func Scanf(format string, a ...interface{}) (n int, err error)
func Scanln(a ...interface{}) (n int, err error) Scan
Scan從標準輸入讀取文本,以空格符或換行符為分隔,將讀取到的內(nèi)容賦值給函數(shù)的參數(shù),函數(shù)返回成功讀取到的數(shù)據(jù)個數(shù)和遇到的錯誤。
代碼示例:
func main() {
var name string
var age int
fmt.Print("請輸入姓名和年齡:")
fmt.Scan(&name, &age)
fmt.Printf("姓名:%s,年齡:%d \n", name, age)
}運行結(jié)果:

Scanf
Scanf根據(jù)format參數(shù)指定的格式去讀取由空白符分隔的值保存到函數(shù)的參數(shù)中。
代碼示例:
func main() {
var name string
var age int
fmt.Print("請輸入姓名和年齡:")
fmt.Scanf("name=%s age=%d", &name, &age)
fmt.Printf("姓名:%s,年齡:%d \n", name, age)
}運行結(jié)果:

使用Scanf進行輸入時,需要完整的在控制臺輸入函數(shù)中指定的格式,例如上述代碼中指定的格式為name=%s age=%d,則在輸入時就必須使用該格式,如果還是和之前的Scan中一樣只輸入lee 23是讀取不到內(nèi)容的。
Scanln
Scanln類似于Scan,但是不同的是使用Scanln時只要輸入了換行之后就會停止讀取。
代碼示例:
func main() {
var name string
var age int
fmt.Print("請輸入姓名和年齡:")
fmt.Scanln(&name, &age)
fmt.Printf("姓名:%s,年齡:%d \n", name, age)
}運行結(jié)果:

例如上述的輸入中,如果僅僅只是輸入了姓名就換行,那么就會停止讀取,但是在Scan中,如果輸入姓名后換行不會停止讀取還需要繼續(xù)輸入年齡后才會停止讀取。
總結(jié)
到此這篇關(guān)于Go語言標準輸入輸出庫基本使用的文章就介紹到這了,更多相關(guān)Go語言標準輸入輸出庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析Go中fasthttp與net/http的性能對比及應用
這篇文章主要為大家詳細介紹了Golang中fasthttp的底層實現(xiàn)以及與net/http的區(qū)別,下面就跟隨小編一起來看看fasthttp到底是如何做到性能如此之快的吧2024-03-03
golang常用庫之pkg/errors包第三方錯誤處理包案例詳解
這篇文章主要介紹了golang常用庫之pkg/errors包第三方錯誤處理包,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
深入了解Golang?哈希算法之MD5、SHA-1和SHA-256
哈希算法是計算機科學領(lǐng)域中一種重要的技術(shù),它將任意長度的輸入數(shù)據(jù)映射為固定長度的哈希值,在本篇文章中,我們將深入探討Golang中的哈希算法,從多個方面介紹其詳細內(nèi)容,希望通過本文的閱讀你將對?Golang哈希算法有更全面的理解2023-05-05

