go fmt包詳解

格式化輸出函數

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

Print採用默認格式將其參數格式化並寫入標準輸出。如果兩個相鄰的參數都不是字符串,會在它們的輸出之間添加空格,返回寫入的字節數和遇到的任何錯誤。

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

Printf根據format參數生成格式化的字符串並寫入標準輸出,返回寫入的字節數和遇到的任何錯誤。

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

Println採用默認格式將其參數格式化並寫入標準輸出。總是會在相鄰參數的輸出之間添加空格並在輸出結束後添加換行符,返回寫入的字節數和遇到的任何錯誤。
區別:

  • Println :可以打印出字符串,和變量
  • Printf : 只可以打印出格式化的字符串,可以輸出字符串類型的變量,不可以輸出整形變量和整形

通用:

%v	相應值的默認格式	Printf("%v",person )	{zhangsan}
%+v	類似%v,但輸出結構體時會添加字段名式	Printf("%+v",person )	{Name:zhangsan}
%#v	相應值的Go語法表示	Printf("#v",person )	main.Person={zhangsan}
%T	相應值的類型的Go語法表示	Printf("%T",person )	main.Person
%%	字面上的百分號,並非值的佔位符	Printf("%%")	%

布爾值:

%t	單詞truefalse	Printf("%t",true)	true

整數:

%b	二進制表示	Printf("%b",5)	101
%c	該值對應的unicode碼值	Printf("%c",0x4E2d)%d	十進制表示	Printf("%d",0x12)	18
%o	八進制表示	Printf("%o",10)	12
%q	單引號圍繞的字符字面值,由Go語法安全的轉譯	Printf("%q",0x4E2d)	'中'
%x	十六進制表示,字母形式爲小寫a-f	Printf("%x",13)	d
%X	十六進制表示,字母形式爲大寫A-F	Printf("%X",13)	D
%U	表示爲Unicode格式:U+1234,等價於"U+%04X"	Printf("%U",0x4E2d)	U+4E2D

浮點數與複數的兩個組分:

%b	無小數部分、指數爲二的冪的科學計數法,與strconv.FormatFloat的'b'轉換格式一致。	Printf("%b",10.20)	5742089524897382p-49
%e	科學計數法,如-1234.456e+78	Printf("%e",10.20)	1.020000e+01
%E	科學計數法,如-1234.456E+78	Printf("%E",10.20)	1.020000E+01
%f	有小數部分但無指數部分,如123.456	Printf("%f",10.20)	10.200000
%g	根據實際情況採用%e或%f格式(以獲得更簡潔、準確的輸出)	Printf("%g",10.20)	10.2
%G	根據實際情況採用%E或%F格式(以獲得更簡潔、準確的輸出)	Printf("%G",10.20)	(10.2+2i)

字符串和[]byte:

%s  輸出字符串表示(string類型或[]byte)  Printf("%s",[]byte("Go語言"))  Go語言
%q  雙引號圍繞的字符串,由Go語法安全的轉譯  Printf("%q","Go語言")  "Go語言"
%x  十六進制,小寫字母,每字節兩個字符  Printf("%x","golang")  676f6c616e67
%X  十六進制,大寫字母,每字節兩個字符  Printf("%X","golang")  676F6C616E67

指針:

%P	十六進制表示,前綴 0x	Printf("%p",&person)	0xc0420341c0

其他:

+	總是輸出數值的正負號;對%q(%+q)會生成全部是ASCII字符的輸出(通過轉義)	Printf("%+q","中文")	"\u4e2d\u6587"
-	在輸出右邊填充空白而不是默認的左邊(即從默認的右對齊切換爲左對齊);		
#	切換格式:八進制數前加0%#o)	Printf("%#0",46)	
 	十六進制數前加0x(%#x)或0X(%#X)	Printf("%#x",46)	0x2e
 	指針去掉前面的0x(%#p);)	fmt.Printf("%#p",&person)	c0420441b0
 	對%q(%#q),如果strconv.CanBackquote返回真會輸出反引號括起來的未轉義字符串;	Printf("%#q",'中')	'中'%U(%#U),如果字符是可打印的,會在輸出Unicode格式、空格、單引號括起來的go字面值;	Printf("%#U",'中')	U+4E2D '中'
' '	(空格)爲數值中省略的正負號流出空白(% d);	Printf("% d",16)	 16
 	以十六進制(% x,% X)打印字符串或切片時,在字節之間用空格隔開	Printf("% x","abc")	61 62 63
0	使用0而不是空格填充,對於數值類型會把填充的0放在正負號後面	

實例

package main

import "fmt"

func main() {
        type Person struct {
                Name string
        }
        var people = Person{Name: "mark"}

        //1.普通佔位符
        //%v(相應值的默認格式)
        fmt.Printf("%v", people) //{mark}

        //%+v(打印結構體時,會添加字段名)
        fmt.Printf("%+v", people) //{Name:mark}

        //%#v(相應值的Go語法表示)
        fmt.Printf("%#v", people) //main.Person{Name:"mark"}

        //%T(相應值的類型的Go語法表示)
        fmt.Printf("%T", people) //main.Person

        //%%(字面上的百分號,並非值的佔位符)
        fmt.Printf("%%") //%

        //2.布爾佔位符
        //%t(true 或 false)
        fmt.Printf("%t", true) //true

        //3.整數佔位符
        //%b(二進制表示)
        fmt.Printf("%b", 5) //101

        //%c(相應Unicode碼點所表示的字符)
        fmt.Printf("%c", 0x4E2D) //中

        //%d(十進制表示)
        fmt.Printf("%d", 0x12) //18

        //%o(八進制表示)
        fmt.Printf("%o", 10) //12

        //%q(單引號圍繞的字符字面值,由Go語法安全地轉義)
        fmt.Printf("%q", 0x4E2D) //'中'

        //%x(十六進制表示,字母形式爲小寫a-f)
        fmt.Printf("%x", 13) //d

        //%X(十六進制表示,字母形式爲小寫A-F)
        fmt.Printf("%X", 13) //D

        //%U(Unicode格式:U+1234,等同於 "U+%04X")
        fmt.Printf("%U", 0x4E2D) //U+4E2D

        //4.浮點數和複數的組成部分
        //%b(無小數部分的,指數爲二的冪的科學計數法)
        fmt.Printf("%b", 10.2) //5742089524897382p-49

        //%e(科學計數法,例如 -1234.456e+78)
        fmt.Printf("%e", 10.2) //1.020000e+01

        //%E(科學計數法,例如 -1234.456E+78)
        fmt.Printf("%E", 10.2) //1.020000E+01

        //%f(有小數點而無指數,例如123.456)
        fmt.Printf("%f", 10.2) //10.200000

        //%g(根據情況選擇%e或%f以產生更緊湊的(無末尾的0))
        fmt.Printf("%g", 10.20) //10.2

        //%G(根據情況選擇%E或%f以產生更緊湊的(無末尾的0))
        fmt.Printf("%G", 10.20+2i) //(10.2+2i)

        //5.字符串與字節切片
        //%s(輸出字符串表示(string類型或[]byte))
        fmt.Printf("%s", []byte("Go語言")) //Go語言

        //%q(雙引號圍繞的字符串,由Go語法安全地轉義)
        fmt.Printf("%q", "Go語言") //"Go語言"

        //%x(十六進制,小寫字母,每字節兩個字符)
        fmt.Printf("%x", "golang") //676f6c616e67

        //%X(十六進制,大寫字母,每字節兩個字符)
        fmt.Printf("%X", "golang") //676F6C616E67

        //6.指針
        //%p(十六進制表示,前綴0x)
        fmt.Printf("%p", &people) //0xc0420421d0
}

參考連接

https://www.cnblogs.com/Survivalist/articles/10287297.html
http://static.markbest.site/blog/88.html

擴展連接

https://blog.csdn.net/chenbaoke/article/details/39932845

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章