Golang标准库介绍

news/2025/3/30 2:30:59/

以下是 Go 语言(Golang)标准库的核心模块及其说明,涵盖常用功能和应用场景:


1. fmt

功能:格式化输入输出
常见用途

  • 字符串格式化(Printf, Sprintf
  • 控制台输入输出(Println, Scanln
  • 格式化错误消息

示例

fmt.Printf("Value: %d, Name: %s\n", 10, "Go")

2. net/http

功能:HTTP 客户端和服务端实现
常见用途

  • 创建 HTTP 服务器(ListenAndServe
  • 处理路由(HandleFunc, ServeMux
  • 发送 HTTP 请求(Get, Post

示例

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello, World!")
})
http.ListenAndServe(":8080", nil)

3. ioos

功能:文件和系统操作

  • io:通用 I/O 接口(Reader, Writer
  • os:操作系统交互(文件、目录、进程)

常见用途

  • 读写文件(os.Open, io.ReadAll
  • 环境变量操作(os.Getenv
  • 执行命令行参数

示例

file, _ := os.Open("data.txt")
data, _ := io.ReadAll(file)
fmt.Println(string(data))

4. encoding/json

功能:JSON 编解码
常见用途

  • 序列化结构体到 JSON(Marshal
  • 反序列化 JSON 到结构体(Unmarshal

示例

type User struct {Name string `json:"name"`Age  int    `json:"age"`
}
user := User{"Alice", 30}
data, _ := json.Marshal(user) // {"name":"Alice","age":30}

5. sync

功能:并发同步原语
常见用途

  • 协程同步(WaitGroup
  • 互斥锁(Mutex, RWMutex
  • 单例模式(Once

示例

var wg sync.WaitGroup
wg.Add(1)
go func() {defer wg.Done()// 协程任务
}()
wg.Wait() // 等待所有协程完成

6. time

功能:时间与日期处理
常见用途

  • 获取当前时间(Now
  • 时间格式化(Format
  • 定时器(Tick, Sleep

示例

now := time.Now()
fmt.Println(now.Format("2006-01-02 15:04:05")) // Go 的固定时间格式模板

7. stringsstrconv

功能:字符串处理与类型转换

  • strings:字符串操作(分割、替换、查找)
  • strconv:字符串与其他类型转换(Atoi, ParseBool

示例

s := "hello,world"
parts := strings.Split(s, ",") // ["hello", "world"]
num, _ := strconv.Atoi("123")  // 字符串转整数

8. database/sql

功能:通用 SQL 数据库接口
常见用途

  • 连接数据库(驱动需第三方库,如 mysql, postgres
  • 执行查询(Query, Exec

示例

db, _ := sql.Open("mysql", "user:pass@tcp(localhost:3306)/dbname")
rows, _ := db.Query("SELECT * FROM users")

9. testing

功能:单元测试与基准测试
常见用途

  • 编写测试函数(TestXxxBenchmarkXxx
  • 运行测试(go test -v

示例

func TestAdd(t *testing.T) {result := Add(2, 3)if result != 5 {t.Errorf("Expected 5, got %d", result)}
}

10. context

功能:请求上下文管理
常见用途

  • 传递请求作用域的值(如用户身份)
  • 控制协程超时或取消(WithCancel, WithTimeout

示例

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// 将 ctx 传递给需要超时控制的函数

11. cryptohash

功能:加密与哈希算法
常见用途

  • 计算 MD5/SHA 哈希值
  • 加密解密(AES, RSA)

示例

h := sha256.New()
h.Write([]byte("secret"))
fmt.Printf("%x", h.Sum(nil)) // 输出 SHA-256 哈希

12. log

功能:日志记录
常见用途

  • 输出日志到控制台或文件
  • 自定义日志前缀(SetPrefix

示例

log.SetFlags(log.Ldate | log.Lshortfile)
log.Println("Error occurred!")

13. flag

功能:命令行参数解析
常见用途

  • 定义命令行参数(StringVar, IntVar
  • 解析参数(Parse

示例

var port int
flag.IntVar(&port, "port", 8080, "server port")
flag.Parse()
fmt.Println("Port:", port)

14. regexp

功能:正则表达式
常见用途

  • 匹配或替换字符串
  • 提取子匹配项

示例

re := regexp.MustCompile(`^[a-z]+\[[0-9]+\]$`)
match := re.MatchString("user[123]") // true

15. sort

功能:排序
常见用途

  • 排序切片(Ints, Strings
  • 自定义排序规则(Interface 接口)

示例

nums := []int{3, 1, 4}
sort.Ints(nums) // [1, 3, 4]

16. container

功能:容器数据结构
包含子包

  • heap:堆实现
  • list:双向链表
  • ring:环形链表

示例

lst := list.New()
lst.PushBack(1)
lst.PushFront(0)

17. mathmath/rand

功能:数学运算与随机数
常见用途

  • 数学计算(Max, Sqrt
  • 生成伪随机数(Intn, Seed

示例

rand.Seed(time.Now().UnixNano())
fmt.Println(rand.Intn(100)) // 0~99 随机数

18. html/template

功能:HTML 模板渲染
常见用途

  • 防止 XSS 攻击(自动转义)
  • 动态生成 HTML 页面

示例

tmpl := template.Must(template.ParseFiles("index.html"))
tmpl.Execute(w, data) // 渲染模板并写入 ResponseWriter

总结

Go 标准库的特点:

  1. 模块化设计:每个库职责单一,易于组合使用。
  2. 高性能:底层基于高效实现(如 HTTP 服务器)。
  3. 强类型支持:通过接口(如 io.Reader)实现灵活扩展。

官方文档:https://pkg.go.dev/std

掌握这些库可覆盖 80% 的日常开发需求,第三方库通常基于标准库扩展(如 Gin 基于 net/http)。


http://www.ppmy.cn/news/1583476.html

相关文章

RK3568 设备树基础语法讲解

文章目录 一、什么是设备树(Device Tree)二、设备树基础语法1. 设备树基本结构2. 语法解析 三、dtb 文件、dtsi 文件、dts 文件的区别1. **DTS 文件(设备树源文件)**2. **DTSI 文件(设备树包含文件)**3. **…

Java: 构造方法详解

Java 构造方法详解 构造方法(Constructor)是 Java 类中用于初始化对象的特殊方法。以下是构造方法的全面解析: 一、基本概念 1. 构造方法的特点 方法名必须与类名完全相同没有返回类型(连void都不写)不能被static、…

mac m3 pro 部署 stable diffusion webui

什么是Stable Diffusion WebUI ? Stable Diffusion WebUI 是一个基于Stable Diffusion模型开发的图形用户界面(GUI)工具。通过这个工具,我们可以很方便的基于提示词,描述一段文本来指导模型生成相应的图像。相比较通过…

DeepSeek大模型 + 自建知识库:用AI打造“专属问答机器人”

一、为什么需要“大模型自建知识库”? 假设你是一名汽车工程师,公司内部有10万份技术文档。当你想查“某型号发动机的扭矩参数”时,传统方式需要手动搜索文档,而通用大模型(如ChatGPT)可能答非所问&#x…

AwesomeQt分享(含源码)

AwesomeQt 这个项目包含了多个Qt组件的使用示例,旨在展示Qt各种强大功能的实现方式。 源码分享 github: awesome_Qtgitee: 后续同步 项目进度 QCustomPlot曲线控件示例 支持排序和筛选的列表控件示例 支持排序和筛选的表格控件示例 属性表示例 Dock窗口示例 自绘…

C++ 与 Rust 混合开发挑战攻克:从内存传递风险到零拷贝高效交换

作为一名深耕C++多年的技术专家,我时常被一个问题困扰:在系统编程中,如何在极致性能与内存安全之间找到平衡?C++以其无与伦比的灵活性和性能,成为许多高性能项目的基石,但手动内存管理却像一柄双刃剑,稍有不慎便可能导致内存泄漏或野指针。Rust的出现带来了新的希望,其…

当人类关系重构:从“相互需要”到“鹅卵石化”——生成式人工智能(GAI)认证的角色与影响

在数字化浪潮的席卷之下,人类社会正经历着前所未有的变革。人与人之间的连接方式、互动模式以及价值认同,都在悄然发生着变化。这一过程中,一个显著的现象是,人与人之间的关系逐渐从传统的“相互需要”模式,转变为一种更为复杂、多元且稳定的“鹅卵石化”结构。在此背景下…

如何用Spring AI构建MCP Client-Server架构

现代 Web 应用正加速与大语言模型(LLMs)深度融合,构建超越传统问答场景的智能解决方案。为突破模型知识边界,增强上下文理解能力,开发者普遍采用多源数据集成策略,将 LLM 与搜索引擎、数据库、文件系统等外…