iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
1
Software Development

Go Phishing!30 天用 Go 實作 Reverse Proxy 之釣魚大作戰系列 第 20

Day20-Go modules

今天是系列文的第二十天了,在今天之前我們每一行扣都是自己寫的,完全沒有使用到外部的 library,但總不可能所有功能都這樣,而且身為開發者應該要 避免重複造輪子 ,所以今天要介紹的就是怎麼使用 Go modules 引用外部的 library

Go modules

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

安裝、使用 dependencies

在 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 時把它加進去

godoc

Go 有一個很厲害的地方就是他會自動幫程式碼產生文件,以剛剛用到的 logrus 來說,想查詢他的文件可以到 GoDoc 輸入 github.com/sirupsen/logrus,就可以查到完整的文件

小結

今天示範了怎麼使用 Go modules 安裝外部的 package logrus,不過這邊只是簡單示範一下XD,後面會用到的是其他 package,有任何問題都歡迎在下方留言,沒問題的話接下來三天會開始實作資料庫的部份


上一篇
Day19-發 issue II(實作篇)
下一篇
Day21-收網 I(連接資料庫)
系列文
Go Phishing!30 天用 Go 實作 Reverse Proxy 之釣魚大作戰30

尚未有邦友留言

立即登入留言