fmt 是go的基礎(chǔ)包之一侨核, 也是使用比較頻繁的庫,最近也一直在研究go灌灾,就把這個庫作為分析的第一個基礎(chǔ)庫搓译,后續(xù)在陸續(xù)把其他基礎(chǔ)庫都做個分析。
fmt 常用方法有以下幾種
1锋喜、輸出到控制臺(命令行)
?? print() ,println() 兩者區(qū)別就是ln是加了換行符的些己,最后輸出都是輸出控制臺豌鸡,一般用來做調(diào)試用,返回值為輸出字符的個數(shù)和error
?printf() 變量通過占位符輸出到控制臺
2、變量返回字符串
Sprint(),Sprintln()? 功能和print println 一樣段标,底層調(diào)用也一樣涯冠,只不過這個不輸出到控制臺,只返回字符串
?Sprintf()? 變量通過占位符返回字符串
3怀樟、Fprint(),Fprintln()? 這兩個是print和println底層調(diào)用的方法功偿,功能也一致,估計是以前留下來的只是可能名字太長吧往堡,就用print和println來重新命名了倆新的方法
4械荷、Scan(),Scanf(),Scanln()? 這三個和print三個方法正好相反,它們是從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)虑灰,也就是命令行讀取輸入的數(shù)據(jù)
例:
var (
name? ? string
age? ? int
married bool
)
fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)
fmt.Printf("掃描結(jié)果 name:%s age:%d married:%t \n", name, age, married)
命令行 輸入: 1:wyf 2:22 3:true?? 看看輸出什么結(jié)果
接下來分析的是占位符吨瞎,go中占位符分不同的類型,以下是別人已經(jīng)總結(jié)好的穆咐,我就直接拿來用了颤诀,感謝作者
General
%v以默認(rèn)的方式打印變量的值
%T打印變量的類型
Integer
%+d帶符號的整型,fmt.Printf("%+d", 255)輸出+255
%q打印單引號
%o不帶零的八進(jìn)制
%#o帶零的八進(jìn)制
%x小寫的十六進(jìn)制
%X大寫的十六進(jìn)制
%#x帶0x的十六進(jìn)制
%U打印Unicode字符
%#U打印帶字符的Unicode
%b打印整型的二進(jìn)制
Float
%f(=%.6f) 6位小數(shù)點
%e(=%.6e) 6位小數(shù)點(科學(xué)計數(shù)法)
%g用最少的數(shù)字來表示
%.3g最多3位數(shù)字來表示
%.3f最多3位小數(shù)來表示
String
%s正常輸出字符串
%q字符串帶雙引號对湃,字符串中的引號帶轉(zhuǎn)義符
%#q字符串帶反引號崖叫,如果字符串內(nèi)有反引號,就用雙引號代替
%x將字符串轉(zhuǎn)換為小寫的16進(jìn)制格式
%X將字符串轉(zhuǎn)換為大寫的16進(jìn)制格式
% x帶空格的16進(jìn)制格式
String Width (以5做例子)
%5s最小寬度為5
%-5s最小寬度為5(左對齊)
%.5s最大寬度為5
%5.7s最小寬度為5拍柒,最大寬度為7
%-5.7s最小寬度為5心傀,最大寬度為7(左對齊)
%5.3s如果寬度大于3,則截斷
%05s如果寬度小于5拆讯,就會在字符串前面補零
Struct
%v正常打印脂男。比如:{sam {12345 67890}}
%+v帶字段名稱。比如:{name:sam phone:{mobile:12345 office:67890}
%#v用Go的語法打印种呐。
比如main.People{name:”sam”, phone:main.Phone{mobile:”12345”, office:”67890”}}
Boolean
%t打印true或false
Pointer
%p帶0x的指針
%#p不帶0x的指針
作者:gowk
鏈接:http://www.reibang.com/p/8be8d36e779c
來源:簡書
下篇分析下sync包