第一步:启用GO111MODULE
go env -w GO111MODULE=on
使用go mod init 创建当前项目模块名称
生成的go.mod 文件
创建zinx 项目,引入两个子模块
package main
import (
“fmt”
"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()
//2 配置路由<br /> s.AddRouter(0, &PingRouter{})
//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()))
//再回写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 字段
replace 也可以用来修改源码地址