我是陳星星,歡迎閱讀我親自寫的 數據結構和算法(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。
- 數據結構和算法(Golang實現)(1)簡單入門Golang-前言
- 數據結構和算法(Golang實現)(2)簡單入門Golang-包、變量和函數
- 數據結構和算法(Golang實現)(3)簡單入門Golang-流程控制語句
- 數據結構和算法(Golang實現)(4)簡單入門Golang-結構體和方法
- 數據結構和算法(Golang實現)(5)簡單入門Golang-接口
- 數據結構和算法(Golang實現)(6)簡單入門Golang-並發、協程和信道
- 數據結構和算法(Golang實現)(7)簡單入門Golang-標准庫
- 數據結構和算法(Golang實現)(8.1)基礎知識-前言
- 數據結構和算法(Golang實現)(8.2)基礎知識-分治法和遞歸
- 數據結構和算法(Golang實現)(9)基礎知識-算法復雜度及漸進符號
- 數據結構和算法(Golang實現)(10)基礎知識-算法復雜度主方法
- 數據結構和算法(Golang實現)(11)常見數據結構-前言
- 數據結構和算法(Golang實現)(12)常見數據結構-鏈表
- 數據結構和算法(Golang實現)(13)常見數據結構-可變長數組
- 數據結構和算法(Golang實現)(14)常見數據結構-棧和隊列
- 數據結構和算法(Golang實現)(15)常見數據結構-列表
- 數據結構和算法(Golang實現)(16)常見數據結構-字典
- 數據結構和算法(Golang實現)(17)常見數據結構-樹
- 數據結構和算法(Golang實現)(18)排序算法-前言
- 數據結構和算法(Golang實現)(19)排序算法-冒泡排序
- 數據結構和算法(Golang實現)(20)排序算法-選擇排序
- 數據結構和算法(Golang實現)(21)排序算法-插入排序
- 數據結構和算法(Golang實現)(22)排序算法-希爾排序
- 數據結構和算法(Golang實現)(23)排序算法-歸並排序
- 數據結構和算法(Golang實現)(24)排序算法-優先隊列及堆排序
- 數據結構和算法(Golang實現)(25)排序算法-快速排序
- 數據結構和算法(Golang實現)(26)查找算法-哈希表
- 數據結構和算法(Golang實現)(27)查找算法-二叉查找樹
- 數據結構和算法(Golang實現)(28)查找算法-AVL樹
- 數據結構和算法(Golang實現)(29)查找算法-2-3樹和左傾紅黑樹
- 數據結構和算法(Golang實現)(30)查找算法-2-3-4樹和普通紅黑樹