數據結構和算法(Golang實現)(7)簡單入門Golang-標準庫

使用標準庫

1、避免重複造輪子

官方提供了不少庫給咱們用,是封裝好的輪子,好比包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軟件(需安裝插件)。函數

2、總結

咱們只學習了Golang語言的一個子集,想更詳細的學習,能夠安裝docker後,打開終端:學習

# 拉鏡像
docker pull hunterhug/gotourzh

# 後臺運行
docker run -d -p 9999:9999 hunterhug/gotourzh

打開瀏覽器輸入:127.0.0.1:9999更全面地學習。

後面的算法分析和實現,會使用Golang來舉例。

系列文章入口

我是陳星星,歡迎閱讀我親自寫的 數據結構和算法(Golang實現),文章首發於 閱讀更友好的GitBook

相關文章
相關標籤/搜索