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/