Golang标准库介绍

以下是 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.rhkb.cn/news/40113.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全面讲解python的uiautomation包

在常规的模拟鼠标和键盘操作,我们一般使用pyautogui,uiautomation模块不仅能直接支持这些操作,还能通过控件定位方式直接定位到目标控件的位置,而不需要自己去获取对应坐标位置。uiautomation模块不仅支持任意坐标位置截图&#x…

图解CNN、RNN、LSTM

一、CNN 二、RNN 三、LSTM 以上笔记参考自b站up主 自然卷小蛮(自然卷小蛮的个人空间-自然卷小蛮个人主页-哔哩哔哩视频),感兴趣的可以去深入了解。

3.25学习总结 抽象类和抽象方法+接口+内部类+API

抽象类和抽象方法: 有抽象方法,那么类肯定是抽象类。父类不一定是抽象的,但如果父类中有抽象方法那一定是抽象类。 如果子类中都存在吃这个行为,但吃的具体东西不同,那么吃这个行为定义在父类里面就是抽象方法&#x…

Ubuntu22.04 UEFI系统配置Apache Tomcat/8.5.87为开机自动启动

前置条件,Java与Tomcat目录均为/usr/local路径下。 java安装目录为:/usr/local/java tomcat安装目录为:/usr/local/tomcat 1. 创建 Tomcat 专用用户和组(可选但推荐) # 创建 tomcat 用户组 sudo groupadd tomcat#…

MySQL复习

1基本操作复习 1.1数据库创建 创建数据库create database 数据库名;判断再创建数据库create database if not exists 数据库名;创建数据库指定字符集create database 数据库名 character set 字符集;创建数据库指定排序方式create database 数据库名 collate 排序方式;创建数据…

数据结构—树(java实现)

目录 一、树的基本概念1.树的术语2.常见的树结构 二、节点的定义三、有关树结构的操作1.按照数组构造平衡 二叉搜索树2.层序遍历树3.前、中、后序遍历树(1).前序遍历树(2).中序遍历树(3).后序遍历树(4).各种遍历的情况的效果对比 4.元素添加5.元素删除1.删除叶子节点2.删除单一…

SPI 机制与 Spring Boot AutoConfiguration 对比解析

一、架构效率革命性提升 1.1 类加载效率跃升 Spring Boot 2.7引入的AutoConfiguration.imports采用清单式配置加载,对比传统SPI机制: 传统SPI扫描路径:META-INF/services/** Spring Boot新方案:META-INF/spring/org.springfram…

node-red dashboard

安装: npm install node-red-dashboard 访问: http://127.0.0.1:1880/ui 1. 创建一个新的 Dashboard 页面: 在 Node-RED 编辑器中,拖动一个 ui_dashboard 节点到工作区,并将其连接到你的数据流。 2. 配置 Dashboard 节点: 双击…

深入理解现代C++在IT行业中的核心地位与应用实践

深入理解现代C在IT行业中的核心地位与应用实践 一、C在IT行业中的不可替代性 现代IT行业中,C凭借其零成本抽象和系统级控制能力,在以下关键领域保持不可替代地位: 应用领域C优势体现典型应用案例高性能计算直接内存管理,SIMD指令…

医院挂号预约小程序|基于微信小程序的医院挂号预约系统设计与实现(源码+数据库+文档)

医院挂号预约小程序 目录 基于微信小程序的医院挂号预约系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、小程序用户端 2、系统服务端 (1) 用户管理 (2)医院管理 (3)医生管理 &#xf…

2025最新版Ubuntu Server版本Ubuntu 24.04.2 LTS下载与安装-详细教程,细致到每一步都有说明

官网 https://ubuntu.com/ 下载 点击菜单 Prodercts> Ubuntu OS>Ubuntu Server 点击下载 下载后会有个弹窗 安装 选择第一个 install Ubuntu Server 直接默认,选择English 【默认】 选择键盘布局【默认】 选择安装配置【默认】 配置网络 我这里选择…

【AI】NLP

不定期更新,建议关注收藏点赞。 目录 transformer大语言模型Google Gemma疫情网民情绪识别 整体框架 baseline构建 模型调参、模型优化、其他模型 数据trick、指标优化、magic feature 数据增强、伪标签、迁移学习 模型融合sklearn中TFIDF参数详解 频率阈值可以去掉…

vscode正则表达式使用

小标题 ^\d.\d.\d\s.*$ ^表示匹配字符串的开头。\d\.\d\.\d表示匹配一到多个数字,接着一个小数点,再接着一到多个数字,然后又一个小数点和一到多个数字,用来匹配类似 “2.1.1” 这样的标题号部分。\s表示匹配一个空格。.*表示匹配…

TCP/IP三次握手的过程,为什么要3次?

一:过程 第一次(SYN): 客户端发送一个带有SYN标志的TCP报文段给服务器,设置SYN1,并携带初始序列号Seqx(随机值),进入SYN_SENT状态。等待服务器相应。 第二次&#xff08…

vue-将组件内容导出为Word文档-docx

1. 安装依赖 首先,我们需要安装docx库,以便在前端生成Word文档。可以通过以下命令进行安装: npm install docx 2. 实现导出功能 2.1 初始化文档 使用docx库创建一个新的文档实例,并定义文档的结构和内容。我们使用Document、…

uni-app常用模板

列表样式一 ,下拉翻页查询,效果图及代码 <template><z-paging ref="paging" v-model="dataList" @query="queryList"><!-- 需要固定在顶部不滚动的view放在slot="top"的view中,如果需要跟着滚动,则不要设置slot=&q…

鸿蒙移动应用开发--UI组件布局

实验要求&#xff1a; 制作一个B站视频卡片界面&#xff0c;大致如下图所示&#xff0c;要求应用到线性布局、层叠布局等相关课堂知识。背景图、logo及文本内容不限。 实验环境 &#xff1a;DevEco Studio 实验过程&#xff1a; 步骤1&#xff1a;创建项目 1. 在您的开发环境…

NVIDIA TensorRT 深度学习推理加速引擎详解

NVIDIA TensorRT 深度学习推理加速引擎详解 文章目录 NVIDIA TensorRT 深度学习推理加速引擎详解引言文章结构 第一部分&#xff1a;TensorRT概述什么是TensorRT&#xff1f;TensorRT的核心功能和优势1. 图优化2. 量化支持3. 动态形状支持4. 多平台支持5. 编程接口6. 性能优势 …

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

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

gradio调用多个CSS的HTML页

很多博客介绍的gradio读取html和css比较简单&#xff0c;如果要做很细致的前端页面优化&#xff0c;比如丰富的响应式的cssjs&#xff0c;至少要有html多个css&#xff0c;是暂不能实现的。bootstrap、font-awesome、jquery等 方案一当然是直接更换htmlcss为主的部署方式&#…