今天是系列文的第二十天了,在今天之前我們每一行扣都是自己寫的,完全沒有使用到外部的 library,但總不可能所有功能都這樣,而且身為開發者應該要 避免重複造輪子 ,所以今天要介紹的就是怎麼使用 Go modules 引用外部的 library
Go modules 是 Go 從 1.11 版開始提供的套件管理工具,就像 Nodejs 的 npm 或是 python 的 pip,用起來也很簡單
這邊要使用 go mod init <project-name>
進行初始化(類似 npm init
),完成後會多一個檔案 go.mod
(就像 Nodejs 中的 package.json
),因為現在都還沒安裝任何依賴所以 go.mod
裡面只有一行 module go-phishing
> go mod init go-phishing
# go: creating new go.mod: module go-phishing
> cat go.mod
# module go-phishing
在 Nodejs 中一般會使用 npm install <package>
安裝 package,Python 則是使用 pip install <package>
,但在 Go 裡面不需要特地下指令,直接用就可以了
譬如說這邊要使用一個 package 叫 logrus,那就直接到 main.go
裡面 import "github.com/sirupsen/logrus"
,意思是「我要使用 github 上 sirupsen/logrus
這個 package」,然後就可以開始用了
import (
"github.com/sirupsen/logrus"
)
func main() {
// 在 main 裡面使用 logrus
l := logrus.New()
l.Info("This is an info")
l.Warn("This is a warning")
l.Error("This is an error")
}
接著在編譯的時候 Go 就會自動下載那個 package 再進行編譯,很棒吧~
編譯完再看一下 go.mod
裡面就有 logrus
了,跟 Nodejs 的 package.json
長得很像
> cat go.mod
# module go-phishing
#
# require github.com/sirupsen/logrus v1.1.1 // indirect
go.sum
編譯完之後除了 go.mod
之外還會多出一個檔案 go.sum
,因為 logrus
也會用到某些 package,裡面記錄的是所有用到的 package 版本,類似 Nodejs 的 package-lock.json
,如果你有在使用 git 之類的版本控制系統,記得要在 commit 時把它加進去
Go 有一個很厲害的地方就是他會自動幫程式碼產生文件,以剛剛用到的 logrus
來說,想查詢他的文件可以到 GoDoc 輸入 github.com/sirupsen/logrus
,就可以查到完整的文件
今天示範了怎麼使用 Go modules 安裝外部的 package logrus
,不過這邊只是簡單示範一下XD,後面會用到的是其他 package,有任何問題都歡迎在下方留言,沒問題的話接下來三天會開始實作資料庫的部份