【Go】Gin从入门到精通—如何理解安装Gin并在本地运行

举报
小雨青年 发表于 2022/03/29 23:12:37 2022/03/29
【摘要】 目录 一、前言二、正片1. 从0开始创建Go项目2. 安装并引入GIn框架3. 本地启动Gin项目 三、总结 一、前言 在上文的碎碎念中,我们开启了学习Gin框架以及Go语言的旅途。 ...

一、前言

在上文的碎碎念中,我们开启了学习Gin框架以及Go语言的旅途。

在本文中,你将掌握

  • 从0开始创建Go项目
  • 安装并引入GIn框架
  • 本地启动Gin项目

二、正片

1. 从0开始创建Go项目

项目使用的工具为VSCode并安装命令行启动工具。

我们首先创建项目文件夹,注意要在go路径下的src内。

(base) xiaoyu@localhost src % mkdir gin01
(base) xiaoyu@localhost src % cd gin01
(base) xiaoyu@localhost gin01 % code .

  
 
  • 1
  • 2
  • 3

gin01为项目文件夹,我们将在这个文件下完成本文内容。

初始化go mod

(base) xiaoyu@localhost gin01 % go mod init
go: creating new go.mod: module gin01

  
 
  • 1
  • 2

这一步很重要,如果你不初始化go mod ,那就会造成库的引入会出问题。

执行完成之后,项目根目录会生成go.mod文件。

module gin01

go 1.14

  
 
  • 1
  • 2
  • 3

创建文件main.go作为项目入口,作为简单事例,我们只做输出文字。

package main

import "fmt"

func main() {
	fmt.Println("Hello, GO!2021!Fight!")
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

main()一般作为项目的入口使用。

运行文件。go run main.go

(base) xiaoyu@localhost gin01 % go run main.go
Hello, GO!2021!Fight!

  
 
  • 1
  • 2

构建文件。go build main.go

构建指的是生成二进制文件,二进制文件可以脱离go环境直接执行。

(base) xiaoyu@localhost gin01 % ./main
Hello, GO!2021!Fight!

  
 
  • 1
  • 2

2. 安装并引入GIn框架

我们使用go get命令安装框架,安装完成的框架会被放在pkg内。

(base) xiaoyu@localhost gin01 % go get -u github.com/gin-gonic/gin
go: downloading github.com/gin-gonic/gin v1.7.4
go: github.com/gin-gonic/gin upgrade => v1.7.4
go: downloading github.com/gin-contrib/sse v0.1.0
go: downloading github.com/golang/protobuf v1.3.3
go: downloading github.com/mattn/go-isatty v0.0.12
go: downloading github.com/go-playground/validator/v10 v10.4.1
go: downloading github.com/ugorji/go v1.1.7
go: downloading github.com/ugorji/go/codec v1.1.7
go: downloading golang.org/x/sys v0.0.0-20200116001909-b77594299b42
go: downloading github.com/go-playground/universal-translator v0.17.0
go: downloading github.com/leodido/go-urn v1.2.0
go: downloading golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
go: downloading github.com/go-playground/locales v0.13.0
go: github.com/golang/protobuf upgrade => v1.5.2
go: golang.org/x/sys upgrade => v0.0.0-20210923061019-b8560ed6a9b7
go: github.com/go-playground/validator/v10 upgrade => v10.9.0
go: github.com/json-iterator/go upgrade => v1.1.12
go: gopkg.in/yaml.v2 upgrade => v2.4.0
go: github.com/modern-go/reflect2 upgrade => v1.0.2
go: github.com/leodido/go-urn upgrade => v1.2.1
go: github.com/ugorji/go/codec upgrade => v1.2.6
go: github.com/go-playground/locales upgrade => v0.14.0
go: github.com/modern-go/concurrent upgrade => v0.0.0-20180306012644-bacd9c7ef1dd
go: github.com/go-playground/universal-translator upgrade => v0.18.0
go: github.com/mattn/go-isatty upgrade => v0.0.14
go: golang.org/x/crypto upgrade => v0.0.0-20210921155107-089bfa567519
go: downloading github.com/golang/protobuf v1.5.2
go: downloading github.com/json-iterator/go v1.1.12
go: downloading github.com/ugorji/go v1.2.6
go: downloading github.com/mattn/go-isatty v0.0.14
go: downloading github.com/go-playground/validator/v10 v10.9.0
go: downloading github.com/ugorji/go/codec v1.2.6
go: downloading golang.org/x/sys v0.0.0-20210923061019-b8560ed6a9b7
go: downloading google.golang.org/protobuf v1.26.0
go: downloading github.com/leodido/go-urn v1.2.1
go: downloading github.com/go-playground/universal-translator v0.18.0
go: downloading github.com/modern-go/reflect2 v1.0.2
go: downloading golang.org/x/crypto v0.0.0-20210921155107-089bfa567519
go: downloading golang.org/x/text v0.3.6
go: downloading github.com/go-playground/locales v0.14.0
go: google.golang.org/protobuf upgrade => v1.27.1
go: golang.org/x/text upgrade => v0.3.7
go: downloading golang.org/x/text v0.3.7
go: downloading google.golang.org/protobuf v1.27.1

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

在这里插入图片描述
我们在本地安装完成之后,就可以在main.go文件中引入Gin了。

import "github.com/gin-gonic/gin"

  
 
  • 1

初始源码如下

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default() //创建gin
	r.GET("/", index) //绑定路由
	r.Run(":8001") //运行绑定端口
}

func index(c *gin.Context) {
	c.JSON(200, gin.H{
		"message": "go!go!go!",
	})
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

我在代码中做了简要的注释,并且整个结构非常简洁。

学习中思考,思考中学习。

如果你学习过PHP语言的框架,那你就很清楚,一个框架的文件夹结构,是有官方规范的。

下图是PHP语言框架Yii2的官方项目结构,我们实际项目中也是这么用的,就算是改进也是在这个基础上的。

在这里插入图片描述

然而Gin显然并没有类似的结构。

后续我们将讨论这一话题。(留坑)

3. 本地启动Gin项目

和简单项目一致,我们也使用run本地运行Gin项目。

(base) xiaoyu@localhost gin01 % go run main.go  
[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    /                         --> main.index (3 handlers)
[GIN-debug] Listening and serving HTTP on :8001


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

本地浏览器访问http://localhost:8001/

在这里插入图片描述
到此,我们就完成了Gin从安装到运行的全部流程。

三、总结

  • go mod init很重要,是引入库的基础
  • 多思考多想问题,能提高学习效率

留了个项目文件夹的坑,后续完成!

本文源码地址 https://download.csdn.net/download/diandianxiyu/24458284

文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。

原文链接:coderfix.blog.csdn.net/article/details/120463913

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。