Go 语言模块学习

42 阅读2分钟

要求:

如何定义一个自定义模块并引入?

  • 步骤 1:创建主项my_app
mkdir my_app
  • 步骤 2:定义自定义模块
  1. 创建模块名
cd /my_app
mkdir my_mod
cd my_mod
go mod init my_mod
  1. go.mod 代码如下:
module my_mod

go 1.25.1
  1. 定义模块的功能代码,touch a.go(文件名随意)
package my_mod

import "fmt"

func A() {
	fmt.Println("A")
}

此时,模块名和功能定义好了,注意如果模块再公司或者外部 git,可以用完整的 git 路径,如:

module git.yourcompany.com/team/go_mod_test
  • 步骤 2:在主模块引入自定义模块
  1. 进入根目录
cd /my_app
go mod init my-app

产出 my_app 的 go.mod

module my-app

go 1.25.1

// 本地模块映射
    my_mod => ./my_mod

require (
    my_mod v0.0.0  // 版本号可以是任意值
)

引入模块并调用

package main

import "fmt"

import "my_mod"

func main() {
	my_mod.A()
	fmt.Println("Hello, World!")
}
  • 步骤 3: 运行 main.go

image.png

结论:

  1. go 引入模块需要做 2 件事,一是通过 go.mod 声明当前模块名,而是声明依赖
  2. 被依赖的模块的名字可以是 git 路径,也可以是本地文件名,必须通过 replace 指定本地物理目录
  3. 如果项目发布到了 git,最好通过 git 路径,这样方便下载依赖

go 一些流行的第三方依赖

Go 语言常用的第三方模块:

Web 框架 gin-gonic/gin: 高性能 HTTP 框架,最流行 gorilla/mux: 路由库 echo: 高性能、极简框架

数据库 gorm.io/gorm: ORM 框架,功能强大 go-sql-driver/mysql: MySQL 驱动 lib/pq: PostgreSQL 驱动 go-redis/redis: Redis 客户端

工具库 spf13/viper: 配置管理 spf13/cobra: 命令行工具 uber-go/zap: 高性能日志库 sirupsen/logrus: 结构化日志

测试 stretchr/testify: 测试断言和 mock golang/mock: mock 框架

网络和 API grpc/grpc-go: gRPC 框架 gorilla/websocket: WebSocket go-resty/resty: HTTP 客户端

数据处理 encoding/json 标准库已经够用 goccy/go-json: 更快的 JSON 库 shopspring/decimal: 精确小数计算

其他常用 golang.org/x/crypto: 加密扩展 jwt-go: JWT 认证 go-playground/validator: 数据验证

这些是 GitHub 上 star 数较高、社区活跃的库。