官方提供了不少庫給咱們用,是封裝好的輪子,好比包fmt
,咱們屢次使用它來打印數據。算法
咱們能夠查看到其裏面的實現:docker
package fmt func Println(a ...interface{}) (n int, err error) { return Fprintln(os.Stdout, a...) } func Printf(format string, a ...interface{}) (n int, err error) { return Fprintf(os.Stdout, format, a...) } func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { p := newPrinter() p.doPrintf(format, a) n, err = w.Write(p.buf) p.free() return } func Fprintln(w io.Writer, a ...interface{}) (n int, err error) { p := newPrinter() p.doPrintln(a) n, err = w.Write(p.buf) p.free() return }
函數Println
是直接打印並換行,Printf
的做用是格式化輸出,如:segmentfault
// 打印一行空行 fmt.Println() // 打印 4 5 6 fmt.Println(4, 5, 6) // 佔位符 %d 打印數字,\n換行 fmt.Printf("%d\n", 2) // 佔位符 %s 打印字符串,\n換行 fmt.Printf("%s\n", "cat") // 佔位符 %v或者%#v 打印任何類型,\n換行 fmt.Printf("%#v,%v\n", "cat", 33) // 更多示例 fmt.Printf("%s,%d,%s,%v,%#v\n", "cat", 2, "3", map[int]string{1: "s"}, map[int]string{1: "s"})
輸出:數組
4 5 6 2 cat "cat",33 cat,2,3,map[int]string{1:"s"}
函數Printf
使用到了另一個函數Fprintf
,而函數Fprintf
內部又調用了其餘的結構體方法。瀏覽器
對於咱們常用的func Printf(format string, a ...interface{})
,咱們傳入format
和許多變量a ...interface{}
,就能夠在控制檯打印出咱們想要的結果。如:數據結構
fmt.Printf("%s,%d,%s,%v,%#v\n", "cat", 2, "3", map[int]string{1: "s"}, map[int]string{1: "s"})
其中%
是佔位符,表示後面的變量逐個佔位。佔位符後面的小寫字母表示佔位的類型,%s
表示字符串的佔位,%d
表示數字類型的佔位,%v
或%#v
表示未知類型的佔位,會自動判斷類型後打印,加#
會打印得更詳細一點。由於該打印不會換行,咱們須要使用\n
換行符來換行。併發
在某些時候,咱們能夠使用官方庫或別人寫的庫,畢竟輪子重造須要時間。數據結構和算法
同時,若是想開發速度提升,建議安裝IDE
,也就是Integrated Development Environment
(集成開發環境),如Goland
(原生支持Golang
) 或IDEA
軟件(需安裝插件)。函數
咱們只學習了Golang
語言的一個子集,想更詳細的學習,能夠安裝docker
後,打開終端:學習
# 拉鏡像 docker pull hunterhug/gotourzh # 後臺運行 docker run -d -p 9999:9999 hunterhug/gotourzh
打開瀏覽器輸入:127.0.0.1:9999更全面地學習。
後面的算法分析和實現,會使用Golang
來舉例。
我是陳星星,歡迎閱讀我親自寫的 數據結構和算法(Golang實現),文章首發於 閱讀更友好的GitBook。