思考并回答以下问题:
app := gin.New()
表示创建一个Gin引擎实例*gin.Engine
,*
代表引用这个实例的指针。
现在我们在实验中用Gin实现一个极简Web应用,帮助大家热身。
初始化项目
我们首先需要初始化Go项目。因为我们已经在环境中提前安装好了Go,因此可以直接在命令行中使用。
现在我们需要通过命令行生成go.mod文件。go.mod是Go程序应用的依赖声明文件,我们需要在项目目录下创建该文件。
在终端,运行以下命令。1
go mod init gin-course
执行完毕后,你会在该目录下看到go.mod文件已经生成,打开它,会看到如下内容。
module gin-course
声明该项目的名称,go 1.19
声明Go版本。
然后,我们需要安装Gin的依赖,在同一个目录下,执行以下命令。1
2GOPROXY=https://goproxy.cn,direct && \
go get github.com/gin-gonic/gin
执行完毕后,再次打开go.mod,我们会看到内容有所更新。另外,还多了一个文件go.sum。这两个文件go.mod和go.sum分别是项目依赖的声明文件和checksum文件,目的是在项目中保持稳定的依赖版本。同时,你可以看到Gin框架的依赖声明github.com/gin-gonic/gin v1.8.1也被加入进来。
好了,现在我们完成了依赖安装和项目初始化。
在这里,我们用到了go mod
命令,这其实是Go语言中的依赖模块Go Module。Go Module是Go语言中用于包管理的官方解决方案。它于Go 1.11版本引入,旨在解决Go语言在包管理方面的一些问题,例如版本依赖管理和包的版本冲突等。Go Module提供了一种以模块为单位组织和管理Go项目的方式。一个模块可以是一个目录,其中包含一个go.mod文件,该文件用于定义模块的名称、依赖项和版本等信息。模块内部可以包含一个或多个包。
现在万事俱备,只欠代码了!
编写主程序
首先,我们在项目目录下创建一个main.go文件,并输入以下内容。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
// 创建Gin引擎
app := gin.New()
// 定义控制器
app.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "Hello World!")
})
// 运行Gin引擎
app.Run(":8080")
}
保存之后,在该目录下执行以下命令。1
go run main.go
执行后,你会看到界面上出现如下日志。
然后,在浏览器中打开localhost:8080
,显示Hello World!。
恭喜!你已经用Gin实现了一个极简Go Web应用。大功告成!
我们用到了什么
你可以看到,之前的main.go文件中主要核心代码就三部分,总共5行。
第一部分,app := gin.New()
表示创建一个Gin引擎实例*gin.Engine
,*
代表引用这个实例的指针。这是整个Gin应用的容器,所有的Web或API逻辑都被封装在里面。你可以把它想象成一个毛坯房,在里面怎么布置就看咱们装修师傅了。
第二部分,app.GET
是之前创建的引擎实例的控制器方法,表示每当接收到HTTP GET请求时,会执行对应的控制器函数。app.GET
带两个参数:第一个参数路径/ping
代表请求URL的相对路径,也是路由(Router);第二个参数func(c *gin.Context) {...}
是该URL路径对应的处理逻辑函数。控制器可以比喻成房间的门,进入厨房门就可以做菜,进入书房门可以办公学习,每一个房间门对应该房屋的某一种功能。
第三部分,app.Run
是启动应用引擎。里面的参数是对应的绑定地址:8080
,冒号左边是IP地址(如果为空,表示绑定全域,相当于0.0.0.0),右边是端口号。这里我们绑定了本地8080端口。这一部分可以看作是装修完工,开始真正入住生活了。
另外还有其他需要注意的地方:
- 这三部分代码都是在
func main() {...}
里,这是整个项目的主函数,也是入口函数; package main
包名必须声明为main。
以上只是Gin框架整个知识体系的很小一部分,但也是核心模块。我们将在后面的章节中详细讲解。
实验总结
本次实验通过Step-by-Step实现一个极简Gin Web应用,从初始化Go项目开始,一直到创建引擎、编写控制器、路由,最后运行应用,体验了Gin框架的快速开始。同时,我们简单介绍了引擎、控制器、路由、启动应用的概念,为后面的学习打基础。特别是控制器与路由,之后我们将会反复使用。
好了,本章关于Gin的简单介绍结束。相信你对Gin框架已经有了一定的认识。接下来,我们就要进入更加硬核的Gin框架基础学习了。