Day14 Gin and Go Mod

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


<<:  【第十五天 - Flutter 官方 CodeLab Get-To-Know 活动报名教学(下)】

>>:  【Day 17】Algorithm & Recursion 演算法 & 递回

第 10 集:浅谈 Container Wrapper 差异

此篇会探讨 container 与 wrapper 用法,会着重在 wrapper 的探讨。 在开...

DAY26 进行式--工作日志001

工作进度流水帐 因应前篇所说,现在开始都作为简单的工作纪录,待整个作品做完这几篇才会更新成正式的心得...

Day 10 Prototype 制作 - 版面、字体、间距、图示设定小技巧分享

今天用这个阳春的版面来介绍版面、字体、图示还有间距的设定。刚刚跟接案的客户谈完流程,也收了头款,大家...

D14.5 - 用 Swift 和公开资讯,打造投资理财的 Apps { 来个中场回亿番 }

这一篇来个中场回亿 D1~D2: 完成 Xcode 基本架设 D3~D6: 完成公司基本资料的拉取 ...

【Android-Span】 设置TextView特定位置颜色+插入图片!

Span可以做到的事情有很多,如 -更改特定位置的字体颜色/大小 -新增项目符号 -可点击 -换行等...