[TOC] ## fmt ### Sscan 数据以**空格(换行)** 为分割符进行分割,分配到变量中 ``` var a int var s string var b int fmt.Sscan("123 abc\n456", &a, &s, &b) fmt.Println(a) //123 fmt.Println(s) //abc fmt.Println(b) //456 ``` ### Sscanf 从字符串中解析给变量 ``` var ( name string age int ) fmt.Sscanf("polaris 28", "%s%d", &name, &age) fmt.Println(name, age) // polaris 28 ``` ### Scan/Scanf 想控制台输入参数 Scan ``` var a string var b string fmt.Scan(&a, &b) //输入hello word 可用空格会回车分开 fmt.Println(a) //hello fmt.Println(b) //word ``` Scanf ``` var a string var b string fmt.Scanf("%s\n%s", &a, &b) //如果是\n 则回车输入第二参数 空格或者为空则空格输入第二字符 fmt.Println(a) //hello fmt.Println(b) //word ``` ### fmt.Errorf 格式化 error ``` //等效于 errors.New("this is a erro : "+"not found") fmt.Errorf("this is a erro :%s","not found") ``` ### Printf ``` a := 0666 b := "hello" fmt.Printf("%d %[1]o %[1]o %#[1]o %[2]s \n", a,b) // 438 666 666 0666 hello %[2]s : 可表示用第二个值打印字符串 ``` ### `\r` 清空后在输出 ``` for { for _, r := range `-\|/` { fmt.Printf("\r%c", r) time.Sleep(100*time.Millisecond) } } time.Sleep(123*time.Second) // 变换着输出 -\|/ 的循环 ``` ## log ### log.SetFlags ``` Ldate = 1 << iota Ltime Lmicroseconds Llongfile //显示觉得路径 Lshortfile // 显示文件名 LUTC LstdFlags = Ldate | Ltime // 显示日期加时间 ``` ``` log.SetFlags(log.Lshortfile | log.Ltime) log.Print("hello wrod") //13:45:38 test.go:16: hello wrod ```