第一步:启用GO111MODULE
    go env -w GO111MODULE=on

    使用go mod init 创建当前项目模块名称
    2. 版本控制 - 图1
    生成的go.mod 文件
    2. 版本控制 - 图2
    创建zinx 项目,引入两个子模块
    package main

    import (
    “fmt”

    1. "github.com/aceld/zinx/ziface"<br /> "github.com/aceld/zinx/znet"<br />)

    //ping test 自定义路由
    type PingRouter struct {
    znet.BaseRouter
    }

    func main() {
    //1 创建一个server句柄
    s := znet.NewServer()

    1. //2 配置路由<br /> s.AddRouter(0, &PingRouter{})
    2. //3 开启服务<br /> s.Serve()<br />}

    //Ping Handle
    func (this *PingRouter) Handle(request ziface.IRequest) {
    //先读取客户端的数据
    fmt.Println(“recv from client : msgId=”, request.GetMsgID(), “, data=”, string(request.GetData()))

    1. //再回写ping...ping...ping<br /> err := request.GetConnection().SendBuffMsg(0, []byte("ping...ping...ping"))<br /> if err != nil {<br /> fmt.Println(err)<br /> }<br />}<br />go.mod 变化为<br />![](https://cdn.nlark.com/yuque/0/2022/png/1013731/1648469045819-3f86e7ad-24af-4ab7-bf26-3755c2105c6e.png#)<br />go.sum为<br />![](https://cdn.nlark.com/yuque/0/2022/png/1013731/1648469047055-18ddb7e7-535a-4ebf-9f79-a1e2f7f786fd.png#)<br />第一条后面的哈希值为模块zip中全部文件的哈希值,第二个为项目go.mod 文件的哈希值<br />**go.sum文件罗列了当前项目直接或者间接依赖的所有模块版本,保证今后项目依赖的版本不会杯篡改。**

    当重新使用go get 命令下载最新的模块时,项目依赖会改变,若想要使用老版本库
    1. 直接修改require
    2. 使用go replace命令
    go mod edit -replace=当前版本=要使用的版本

    当前项目的go.mod 文件会多出replace 字段
    2. 版本控制 - 图3
    replace 也可以用来修改源码地址