1-构建你的第一个应用程序

思考并回答以下问题:

  • 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
2
GOPROXY=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
20
package 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框架基础学习了。

0%