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


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

使用標准庫

一、避免重復造輪子

官方提供了很多庫給我們用,是封裝好的輪子,比如包fmt,我們多次使用它來打印數據。

我們可以查看到其里面的實現:

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的作用是格式化輸出,如:

    // 打印一行空行
    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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM