首頁 > 軟體

go語言標準庫fmt包的一鍵入門

2022-08-01 18:01:50

⛳️ 實戰場景

本篇部落格為大家帶來 Go 語言中的 fmt 包,該包實現了標準輸入和輸出兩大部分內容。

首先對外輸出,包含 PrintFprintSprintErrorof 等內容,其中 Print 在之前的部落格中已經有所涉及,本篇我們將其細緻的說明一下。

Print 系列函數

與 Print 系列同源的函數涉及 PrintfPrintln 等內容,其含義如下所示:

Print:直接輸出內容;

Printf:格式化輸出字串;

Println:在輸出的結尾多新增一個換行符。

接下來直接用程式碼演示一下即可掌握。

package main
import "fmt"
func main() {
	fmt.Print("單獨一行輸出資訊")
	name := "夢想橡皮擦"
	fmt.Printf("博主:%sn", name)
	fmt.Println("帶換行的展示")
	fmt.Printf("博主:%sn", name)
}

輸出結果如下所示:

單獨一行輸出資訊博主:夢想橡皮擦
帶換行的展示
博主:夢想橡皮擦

其中 Printf 中涉及格式化預留位置相關之後,請看下文。

Fprint 函數

該函數以 F 開頭,基本可以確定其和檔案操作有直接關係,在實踐中會發現該函數會將內容輸出到 io.Writer ,測試程式碼如下所示:

package main
import (
	"fmt"
	"os"
)
func main() {
	// 開啟檔案物件,並準確寫入內容
	fileObj, err := os.OpenFile("./ca.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		fmt.Println("檔案異常:", err)
		return
	}
	name := "夢想橡皮擦"
	fmt.Fprintf(fileObj, "姓名:%s", name)
}

在編寫程式碼前,注意優先匯入 os 包,用於操作檔案,然後使用 os.OpenFile 建立一個檔案物件,後續就可對檔案物件進行內容寫入。

Sprint 函數

該函數以 S 打頭,那必然和字串有關,範例程式碼如下所示:

package main
import (
	"fmt"
)
func main() {
	// Sprint 函數
	s1 := fmt.Sprint("橡皮擦")
	name := "橡皮擦"
	age := 18
	s2 := fmt.Sprintf("name:%s,age:%d", name, age)
	s3 := fmt.Sprintln("橡皮擦")
	fmt.Println(s1, s2, s3)
}

Sprint 系列函數會把傳入的資料生成一個字串返回。

Errorf 函數

該函數根據 format 引數對字串進行格式化並返回。

package main
import (
	"fmt"
)
func main() {
	err := fmt.Errorf("這是一個錯誤")
	fmt.Print(err)
}

該內容與具體場景有關係,直接使用,與普通字串無太大差異。

⛳️ 格式化預留位置

在 Go 中只要函數名中攜帶了 printf,那就支援 format 格式化引數,即預留位置,下面我們對預留位置進行一下基本說明。

通用部分

預留位置都由 % 開頭,後跟具體型別。

%v:值預設形式;

%+v:輸出結構體會攜帶欄位名;

%#v:用 Go 的語法表示值;

%T:值型別;

%%:列印符號 %

可以使用下述程式碼進行測試:

package main
import (
	"fmt"
)
func main() {
	fmt.Printf("%vn", 60)
	fmt.Printf("%vn", "橡皮擦")
	o := struct{ name string }{"橡皮擦"}
	fmt.Printf("%vn", o)
	fmt.Printf("%#vn", o)
	fmt.Printf("%Tn", o)
	fmt.Printf("60%%n")
}

整型相關

與整型相關的預留位置有:

%b:二進位制展示;

%c:unicode 編碼展示;

%d:十進位制;

%o:八進位制;

%x:十六進位制小寫;

%X:十六進位制大寫;

%q:go 語法字元字面值。

本部分比較簡單,直接測試一下即可,在實踐中根據需要展示。

浮點數與複數

%b:去除小數部分,二進位制指數的科學計數法;

%e:科學計數法,字母 e 小寫;

%E:同上,字母 e 大寫;

%f:展示小數;

%F:同上;

%g:根據實際情況使用 %e 還是 %f

布林型和指標

%t:展示為 true 和 false;

%p:十六進位制展示,並且前導加 ox

⛳️ 標準輸入

Go 語言 fmt 包下有 fmt.Scanfmt.Scanffmt.Scanln 三個標準輸入函數,用於獲取使用者輸入資訊

fmt.Scan

該函數從標準輸入獲取文字,遇到換行符即表示獲取結束,簡單的範例程式碼如下所示:

package main
import (
	"fmt"
)
func main() {
	var (
		name string
		age  int
	)
	fmt.Scan(&name, &age)
	fmt.Printf("獲取使用者輸入 name:%s age:%d n", name, age)
}

fmt.Scanf

在獲取資料時,可以使用 format 引數,而且要求輸入的資料必須能與對應格式匹配。

fmt.Scanln

Scanln 類似 Scan,它在遇到換行時才停止掃描。

Fscan 和 Sscan 系列函數

以上幾個函數的功能類似於標準輸出中的用法,F 開頭的函數用於操作檔案,S 開頭的函數表示從指定字串中讀取資料,到此這篇關於go語言標準庫fmt包的文章就介紹到這了更多關於go標準庫fmt包的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com