使用标準庫
一、避免重複造輪子
官方提供了很多庫給我們用,是封裝好的輪子,比如包
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("%dn", 2)
// 占位符 %s 列印字元串,n換行
fmt.Printf("%sn", "cat")
// 占位符 %v或者%#v 列印任何類型,n換行
fmt.Printf("%#v,%vn", "cat", 33)
// 更多示例
fmt.Printf("%s,%d,%s,%v,%#vn", "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,%#vn", "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實作),文章首發于
目錄 · 資料結構和算法(Golang實作)goa.lenggirl.com
- 資料結構和算法(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樹和普通紅黑樹