以下是 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. io 和 os
功能:文件和系统操作
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) 5. sync
功能:并发同步原语
常见用途:
- 协程同步(
WaitGroup)互斥锁(Mutex, RWMutex)单例模式(Once)示例:
var wg sync.WaitGroupwg.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")) 7. strings 和 strconv
功能:字符串处理与类型转换
strings:字符串操作(分割、替换、查找)strconv:字符串与其他类型转换(Atoi, ParseBool)示例:
s := "hello,world"parts := strings.Split(s, ",") 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
功能:单元测试与基准测试
常见用途:
- 编写测试函数(
TestXxx,BenchmarkXxx)运行测试(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()11. crypto 和 hash
功能:加密与哈希算法
常见用途:
- 计算 MD5/SHA 哈希值加密解密(AES, RSA)
示例:
h := sha256.New()h.Write([]byte("secret"))fmt.Printf("%x", h.Sum(nil)) 12. log
功能:日志记录
常见用途:
- 输出日志到控制台或文件自定义日志前缀(
SetPrefix)示例:
log.SetFlags(log.Ldate | log.Lshortfile)log.Println("Error occurred!")13. flag
功能:命令行参数解析
常见用途:
- 定义命令行参数(
StringVar, IntVar)解析参数(Parse)示例:
var port intflag.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]") 15. sort
功能:排序
常见用途:
- 排序切片(
Ints, Strings)自定义排序规则(Interface 接口)示例:
nums := []int{3, 1, 4}sort.Ints(nums) 16. container
功能:容器数据结构
包含子包:
heap:堆实现list:双向链表ring:环形链表示例:
lst := list.New()lst.PushBack(1)lst.PushFront(0)17. math 和 math/rand
功能:数学运算与随机数
常见用途:
- 数学计算(
Max, Sqrt)生成伪随机数(Intn, Seed)示例:
rand.Seed(time.Now().UnixNano())fmt.Println(rand.Intn(100)) 18. html/template
功能:HTML 模板渲染
常见用途:
- 防止 XSS 攻击(自动转义)动态生成 HTML 页面
示例:
tmpl := template.Must(template.ParseFiles("index.html"))tmpl.Execute(w, data) 总结
Go 标准库的特点:
- 模块化设计:每个库职责单一,易于组合使用。高性能:底层基于高效实现(如 HTTP 服务器)。强类型支持:通过接口(如
io.Reader)实现灵活扩展。官方文档:pkg.go.dev/std
掌握这些库可覆盖 80% 的日常开发需求,第三方库通常基于标准库扩展(如 Gin 基于 net/http)。
