在上一篇大概了解了Golang的简单语法及函数等相关后,我们进入到Gin框架的安装

一、安装Gin包管理工具以及类库

1、安装govendor(包管理工具):

  • 必须安装git
go get github.com/kardianos/govendor

2、安装一些辅助的类库:

  • 在这里Gin官方就很友好了,把镜像放到了Gin的官方Github上
go get -u -v github.com/ramya-rao-a/go-outline

3、接下来安装go-outline 和 goreturns。

git clone https://github.com/golang/tools.git $GOPATH/src/golang.org/x/tools
go get -v github.com/ramya-rao-a/go-outline
go get -v github.com/sqs/goreturns
go get -v github.com/rogpeppe/godef

4、以上安装好Go的最基本配置后,最后一步安装Gin

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

5、在这个情况下,很多同学都会因为被墙了,而导致安装失败

go语言代码分层 go语言 gin_环境变量

不用着急,在这里其实Golang在Github上已经建立了镜像库,这个开源项目goproxy.io已经实现了我们想要的东西,我们只需要配置一下环境变量代理到goproxy.io上就可以正常下载被强的包了

  • 开启 Go module 功能
  • 如果您使用的 Go 版本是 1.13 及以上 (推荐)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

设置完上面几个环境变量后,您的 go 命令将从公共代理镜像中快速拉取您所需的依赖代码了。私有库的支持请看这里

  • 如果您使用的 Go 版本是 1.12 及以下
  • Bash (Linux or macOS)
# 启用 Go Modules 功能
export GO111MODULE=on
# 配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io

或者,根据文档可以把上面的命令写到.profile.bash_profile文件中长期生效。

  • PowerShell (Windows)
# 启用 Go Modules 功能
$env:GO111MODULE="on"
# 配置 GOPROXY 环境变量
$env:GOPROXY="https://goproxy.io"

现在,当你构建或运行你的应用时,Go 将会通过 goproxy.io 获取依赖,具体可访问:https://goproxy.io/zh/ 查看配置

  • 上面配置完后,我们就可以下载被墙的包了
go get -u -v github.com/gin-gonic/gin

6、下载好后测试一下是否能成功,创建main.go写入

package main
import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		c.String(http.StatusOK, "搭建完成")
	})
	r.Run(":8888")  // 端口号8888
}

7、运行main.go

go run main.go

go语言代码分层 go语言 gin_github_02

8、访问http://127.0.0.1:8888/

go语言代码分层 go语言 gin_github_03

二、热加载调试 Hot Reload

Python 的 Flask框架,有 debug 模式,启动时传入 debug=True 就可以热加载(Hot Reload, Live Reload)了。即更改源码,保存后,自动触发更新,浏览器上刷新即可。免去了杀进程、重新启动之苦。

1、Gin 原生不支持,但有很多额外的库可以支持。例如

github.com/codegangsta/gin
github.com/pilu/fresh

2、这次,我们采用fresh

go get -v -u github.com/pilu/fresh

3、安装好后,把go run main.go执行换成fresh执行,每次更改源文件,代码将自动重新编译

  • 但在这块有的同学可能会碰到下面的问题

go语言代码分层 go语言 gin_github_04

  • 这个是因为项目根目录下面没有go.mod文件,创建这个文件,这个文件里面用来管理module的。
  • 我们在根目录下面执行
go mod code  // code是项目名
  • 这个时候会默认生成一个.mod的文件,接下来我们重新执行fresh
  • 执行成功后,编辑文件后,会自动检测并且编译,这样就可以免去了每次修改后都要重启的痛苦了

go语言代码分层 go语言 gin_go_05