天天看點

Go fmt 包執行個體

fmt包提供格式化輸入輸出,主要有下面幾個函數:

func Printf(format string, a …interface{}) (n int, err error)

func Print(a …interface{}) (n int, err error)

func Println(a …interface{}) (n int, err error)

func Sprintf(format string, a …interface{}) string

func Sprint(a …interface{}) string

func Sprintln(a …interface{}) string

func Fprintf(w io.Writer, format string, a …interface{}) (n int, err error)

func Fprint(w io.Writer, a …interface{}) (n int, err error)

func Fprintln(w io.Writer, a …interface{}) (n int, err error)

func Scanf(format string, a …interface{}) (n int, err error)

func Scan(a …interface{}) (n int, err error)

func Scanln(a …interface{}) (n int, err error)

func Sscanf(str string, format string, a …interface{}) (n int, err error)

func Sscan(str string, a …interface{}) (n int, err error)

func Sscanln(str string, a …interface{}) (n int, err error)

func Fscanf(r io.Reader, format string, a …interface{}) (n int, err error)

func Fscan(r io.Reader, a …interface{}) (n int, err error)

func Fscanln(r io.Reader, a …interface{}) (n int, err error)

func Errorf(format string, a …interface{}) error

函數執行個體:

//fmt格式化輸入輸出函數
package main

import (
	"fmt"
	"os"
)

func main() {
	
	//Print 系列
	fmt.Printf("Printf: %s\n", "按格式列印,空格換行需自行添加")
	fmt.Print("Print: ", "預設格式列印,非字元串自動加空格,換行需自行添加\n")
	fmt.Println("Println:", "預設格式列印,所有元素自動加空格,自動添加換行")

	//Sprint系列
	str := fmt.Sprintf("Sprintf: %s\n", "按格式列印,空格換行需自行添加")
	fmt.Print(str)
	str = fmt.Sprint("Sprint: ", "預設格式列印,非字元串自動加空格,換行需自行添加\n")
	fmt.Print(str)
	str = fmt.Sprintln("Sprintln:", "預設格式列印,所有元素自動加空格,自動添加換行")
	fmt.Print(str)

	//Fprint系列
	fmt.Fprintf(os.Stdout, "Fprintf: %s\n", "按格式列印,空格換行需自行添加")
	fmt.Fprint(os.Stdout, "Fprint: ", "預設格式列印,非字元串自動加空格,換行需自行添加\n")
	fmt.Fprintln(os.Stdout, "Fprintln:", "預設格式列印,所有元素自動加空格,自動添加換行")

	
	//Scanf系列
	var a, b, c int
	
	fmt.Scanf("%d%d%d", &a, &b, &c)//輸入時用任意空格或tab隔開,不能換行
	fmt.Println(a, b, c)
	fmt.Scanf("%d,%d,%d", &a, &b, &c)//輸入時要用逗号隔開,要跟引号内保持一緻,其他字元均可
	fmt.Println(a, b, c)
	fmt.Scan(&a, &b, &c)//輸入時用任意空格、TAB或者回車隔開,直到達到參數數量為止
	fmt.Println(a, b, c)
	fmt.Scanln(&a, &b, &c)//輸入時用任意空格、TAB隔開,不能用換行,換行即終止
	fmt.Println(a, b, c)

	input := "12\n\n34\n56"
	fmt.Sscanf(input, "%d\n\n%d\n%d", &a, &b, &c)//input與%d串保持一緻,若%d之間無任何字元,則input之間可為任意空格或TAB
	fmt.Println(a, b, c)
	fmt.Sscan(input, &a, &b, &c)//input中可用任意空格、tab、回工廠中的房間隔,直到到達參數數量為止
	fmt.Println(a, b, c)
	input2 := "23 45 67"
	fmt.Sscanln(input2, &a, &b, &c)//input中隻能用任意空格、tab間隔,不能換行,換行即終止
	fmt.Println(a, b, c)
	

	fmt.Fscanf(os.Stdin, "%d,%d,%d", &a, &b, &c)//輸入時要用逗号隔開,要跟引号内保持一緻,其他字元均可。無間隔時預設輸入時用任意空格或tab隔開,不能換行
	fmt.Println(a, b, c)
	fmt.Fscan(os.Stdin, &a, &b, &c)//輸入時用任意空格、TAB或者回車隔開,直到達到參數數量為止
	fmt.Println(a, b, c)
	fmt.Fscanln(os.Stdin, &a, &b, &c)//輸入時用任意空格、TAB隔開,不能用換行,換行即終止
	fmt.Println(a, b, c)

	//Errorf系列
	err := fmt.Errorf("Error: %s", "Test error!")//生成一個error類型
	fmt.Println(err)

}
           

參考資料:

https://github.com/astaxie/gopkg/tree/master/fmt

https://golang.org/pkg/fmt/