iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0

Background

Goland從1.11版本起就開始導入了GO Module功能,這樣也不需要再將library給放入project當中佔用空間,此外Go Module也能夠防止別人被GOPATH誤導。

How To Use GO MOD?

Init go.mod

首先我們先到使用專案的根目錄

cd /<path>/<of>/<your>/<project name>

接下來我們初始化該project的GO MOD

go mod init <project name>

成功初始化的話,應該會在該路徑下產生名為go.mod的檔案,而該檔案就是用來記錄專案內所使用到的所有第三方套件。

Download from go.mod

一樣到剛clone完的go project當中,輸入以下指令

go mod download

成功執行該指令的話,會將go.mod中所定義的所有library都給下載下來,但除了該指令外,在執行go build或是go test時,也會自動下載library並新增至go.mod當中,並產生出最新的go.sum以確保library有更新。

  • go.sum: 一個雜湊驗證檔,主要用來驗證下載的module是否正確,內容是否有遭竄改。

Update module to go.mod

透過該指令安裝並新增新的module至go.mod當中

go get <module url>

Remove redundancy module from go.mod

移除在go.mod當中不必要、未被使用的module

go mod tidy

List all modules

透過該指令打印出所有go.mod中的module

go list -m all

Gin

從這章節開始我們將進入Web的世界,那根據geeksforgeeks統計的2020數據,我們將挑選目前星星數最多的backend framework,也就是Gin來進行解說與教學。

Gin的優勢:

  • 性能方面較佳
  • 基於官方net/http package進行封裝
  • 有著routing快速的httprouter
  • 有著切分乾淨的中間層概念
  • 有著許多的開源貢獻者

....等

geeksforgeeks統計資料

https://ithelp.ithome.com.tw/upload/images/20210929/20129737LAAd8XAtR6.png

hackernoon統計資料

https://ithelp.ithome.com.tw/upload/images/20210929/20129737rkS6ltXdFY.png

Installation of Gin

首次開發請使用go get指令來安裝Gin

$ go get github.com/gin-gonic/gin

更新的話則是透過 go get -u

$ go get -u github.com/gin-gonic/gin

Start with Gin

  • 首先init一個屬於該project的go mod
go mod init 
  • 首先匯入gin這個package
import (
    "github.com/gin-gonic/gin"
)
  • 接下來則是先創建一個Endpoint來進行測試
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)
	}
}
  • 接著就能執行main.go
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就完成囉。

Summary

這章節我們簡述了go mod以及gin,並透過他們做出了一個簡易的application,那在下個章節會透過docker-compose架出一個簡便的測試環境,以便往後再搭配database或是cache使用時,都能簡單地利用不同container進行串接。

Reference

https://www.geeksforgeeks.org/top-5-golang-frameworks-in-2020/

https://hackernoon.com/the-myth-about-golang-frameworks-and-external-libraries-93cb4b7da50f


上一篇
Day13 Defer
下一篇
Day15 Gin's Router And RESTful API
系列文
fmt.Println("從零開始的Golang生活")30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言