Goland從1.11版本起就開始導入了GO Module功能,這樣也不需要再將library給放入project當中佔用空間,此外Go Module也能夠防止別人被GOPATH誤導。
首先我們先到使用專案的根目錄
cd /<path>/<of>/<your>/<project name>
接下來我們初始化該project的GO MOD
go mod init <project name>
成功初始化的話,應該會在該路徑下產生名為go.mod
的檔案,而該檔案就是用來記錄專案內所使用到的所有第三方套件。
一樣到剛clone完的go project當中,輸入以下指令
go mod download
成功執行該指令的話,會將go.mod
中所定義的所有library都給下載下來,但除了該指令外,在執行go build
或是go test
時,也會自動下載library並新增至go.mod
當中,並產生出最新的go.sum
以確保library有更新。
透過該指令安裝並新增新的module至go.mod當中
go get <module url>
移除在go.mod
當中不必要、未被使用的module
go mod tidy
透過該指令打印出所有go.mod中的module
go list -m all
從這章節開始我們將進入Web的世界,那根據geeksforgeeks統計的2020數據,我們將挑選目前星星數最多的backend framework,也就是Gin來進行解說與教學。
Gin的優勢:
....等
geeksforgeeks統計資料
hackernoon統計資料
首次開發請使用go get
指令來安裝Gin
$ go get github.com/gin-gonic/gin
更新的話則是透過 go get -u
$ go get -u github.com/gin-gonic/gin
go mod init
gin
這個packageimport (
"github.com/gin-gonic/gin"
)
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
app := gin.Default()
app.GET("/hello/:name", func(c *gin.Context) {
name := c.Param("name")
c.JSON(200, gin.H{
"message": "hello " + name,
})
})
err := app.Run(":8080")
if err != nil {
panic(err)
}
}
go run main.go 3959 23:40:05
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /hello/:name --> main.main.func1 (3 handlers)
[GIN-debug] Listening and serving HTTP on :8080
{"message":"hello :name"}
到這裡我們的第一個gin application就完成囉。
這章節我們簡述了go mod以及gin,並透過他們做出了一個簡易的application,那在下個章節會透過docker-compose架出一個簡便的測試環境,以便往後再搭配database或是cache使用時,都能簡單地利用不同container進行串接。
https://www.geeksforgeeks.org/top-5-golang-frameworks-in-2020/
https://hackernoon.com/the-myth-about-golang-frameworks-and-external-libraries-93cb4b7da50f