安装与项目初始化

在开始写代码之前,我们需要先把环境准备好。这一章会带你完成 Gin 的安装和项目初始化。

安装 Gin

使用 Go Modules

现在 Go 项目都用 Go Modules 管理依赖,Gin 也不例外。先创建一个新项目:

mkdir myapp
cd myapp
go mod init myapp

然后安装 Gin:

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

这条命令会把 Gin 下载到你的项目依赖中。-u 参数表示使用最新版本。

验证安装

创建一个 main.go 文件测试一下:

package main

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

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run()
}

运行:

go run main.go

如果看到类似输出,说明安装成功:

[GIN-debug] Listening and serving HTTP on :8080

访问 http://localhost:8080/ping,应该能看到 {"message":"pong"}

项目结构

一个典型的 Gin 项目结构如下:

myapp/
├── main.go
├── go.mod
├── go.sum
├── config/
│   └── config.go
├── controllers/
│   └── user.go
├── middlewares/
│   └── auth.go
├── models/
│   └── user.go
├── routes/
│   └── routes.go
└── utils/
    └── helper.go

这种结构把不同功能的代码分开放,项目大了之后比较好维护。

目录说明

目录用途
config配置相关代码
controllers控制器,处理请求逻辑
middlewares中间件
models数据模型
routes路由定义
utils工具函数

简单项目示例

先从一个简单的结构开始。创建以下文件:

main.go

package main

import (
    "myapp/routes"
)

func main() {
    r := routes.SetupRouter()
    r.Run(":8080")
}

routes/routes.go

package routes

import (
    "github.com/gin-gonic/gin"
    "myapp/controllers"
)

func SetupRouter() *gin.Engine {
    r := gin.Default()

    r.GET("/", controllers.Index)
    r.GET("/users", controllers.GetUsers)

    return r
}

controllers/user.go

package controllers

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

func Index(c *gin.Context) {
    c.JSON(200, gin.H{
        "message": "Welcome to my app",
    })
}

func GetUsers(c *gin.Context) {
    c.JSON(200, gin.H{
        "users": []string{"Alice", "Bob", "Charlie"},
    })
}

运行 go run main.go,访问 http://localhost:8080/users 就能看到用户列表了。

常见问题

下载慢怎么办

国内访问 Go 的代理可能比较慢,可以设置代理:

go env -w GOPROXY=https://goproxy.cn,direct

版本冲突

如果遇到版本问题,可以清理缓存重新下载:

go clean -modcache
go mod download

小结

这一章我们完成了:

  • 使用 Go Modules 安装 Gin
  • 验证安装是否成功
  • 了解项目结构
  • 创建一个简单的项目

现在环境已经准备好了,下一章我们开始写第一个 Gin 应用。