golang 1.24全部内置包、常用第三方库、包管理

发布于:2025-06-09 ⋅ 阅读:(15) ⋅ 点赞:(0)

数据操作相关

简介
strings 字符串操作
strconv 字符串类型转换
time 时间测量及显示
math 数学函数、随机数
container 数据结构
regexp 正则表达式
bytes 字节操作
hash hash函数
index 字符串搜索
sort 排序
text 文本操作
cmp 比较值相等
iter 迭代器
maps map操作
slices 切片操作
structs 结构体
unique 相同的值在内存中只存一次

IO、编码相关

简介
archive 打包
compress 压缩
encoding 编码,json等
crypto 加密
fmt 标准IO
io IO接口、实用工具
bufio 缓冲区IO
os 操作系统函数,读文件等
database 数据库驱动
flag 命令行参数解析
html html转译 数据驱动模板
mime 电子邮件
image 图像操作
net 网络,http、rpc等实现
path 斜杠分割路径
expvar 公共变量
unicode unicode处理
log 日志

控制、调试相关

简介
builtin 基础数据类型、基础函数,不需要导入
reflect 反射
unsafe 直接操作内存
weak 弱引用,不阻止内存回收
arena 手动管理内存
context 协程上下文
errors 错误处理
sync 同步单元
runtime 运行时信息,debug profile
debug 读取调试信息、解析Go符号表等
embed 编译时将资源文件一起打包
plugin 动态模块加载
syscall 系统调用
testing 测试工具

第三方库

简介
Gin Web框架,RESTful
Fiber Web框架,基于Fasthttp,高性能
Gorilla MUX HTTP路由管理
istio 服务网格
go-zero 微服务组件
go-kit 微服务组件
GORM ORM(对象关系映射)库
Cobra 命令行工具,替代内置包flag
Viper 读取配置
Logrus 日志库
testify 测试框架
GoConvey 测试框架

包管理

创建项目

> go mod init awesomeProject

会自动创建 go.mod 文件

module awesomeProject

go 1.24.3

创建代码文件 main.go

package main

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

func main() {
	// 创建默认的 gin 引擎
	r := gin.Default()

	// 定义一个简单的路由
	r.GET("/", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "Hello, Gin!",
		})
	})

	// 启动服务器
	err := r.Run(":8080")
	if err != nil {
		return
	}
}

构建并运行

> go mod tidy

更新 go.mod 依赖项,会根据代码中的 import 下载并引入依赖包,并移除不需要的包

go.mod 示例

module awesomeProject2

go 1.24.3

require github.com/gin-gonic/gin v1.10.1

require (
	github.com/bytedance/sonic v1.13.3 // indirect
	github.com/bytedance/sonic/loader v0.2.4 // indirect
)
> go build

构建,生成可执行文件

vendor

> go mod vendor

将第三方依赖包存入工程中的vendor目录,go build会优先从vendor中查找依赖项。更新vendor目录需要重复执行指令。

依赖包版本

版本格式为 v(major).(minor).(patch),比如 v1.2.3。
一般认为,major版本更新不向后兼容,minor版本更新向后兼容,而 import 会区分major版本,比如

import "github.com/pelletier/go-toml/v2"

即一个项目可以同时使用一个依赖包的两个版本。

go mod tidy 版本选择:

  • 直接依赖包,即代码中 import 的包,会选择该major版本的最新小版本
  • 间接依赖包,即 import 的包依赖的其他包,会选择最高的显式依赖版本,比如,B依赖D的 1.0.0,C依赖D的1.2.3,则D选择1.2.3

更新版本:

> go get -u

更新minor版本,比如 v1.2.3 更新到 v1.3.1

> go get -u=patch

只更新patch版本,比如 v1.2.3 更新到 v1.2.5

查看可更新列表:

> go list -u -m all

replace:
替换依赖库,比如原库不存在,或者修复原库的bug,可在 go.mod 中使用 replace 替换

replace example.com/theirmodule v1.2.3 => example.com/myfork/theirmodule v1.2.3-fixed

exclude:
排除依赖库,可用于排除间接依赖但实际不会被加载的包

exclude example.com/theirmodule v1.3.0