以下是 Go 语言(Golang)标准库的核心模块及其说明,涵盖常用功能和应用场景:
fmt
功能:格式化输入输出
常见用途:
Printf
, Sprintf
)Println
, Scanln
)示例:
fmt.Printf("Value: %d, Name: %s\n", 10, "Go")
net/http
功能:HTTP 客户端和服务端实现
常见用途:
ListenAndServe
)HandleFunc
, ServeMux
)Get
, Post
)示例:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
})
http.ListenAndServe(":8080", nil)
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))
encoding/json
功能:JSON 编解码
常见用途:
Marshal
)Unmarshal
)示例:
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
user := User{"Alice", 30}
data, _ := json.Marshal(user) // {"name":"Alice","age":30}
sync
功能:并发同步原语
常见用途:
WaitGroup
)Mutex
, RWMutex
)Once
)示例:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// 协程任务
}()
wg.Wait() // 等待所有协程完成
time
功能:时间与日期处理
常见用途:
Now
)Format
)Tick
, Sleep
)示例:
now := time.Now()
fmt.Println(now.Format("2006-01-02 15:04:05")) // Go 的固定时间格式模板
strings
和 strconv
功能:字符串处理与类型转换
strings
:字符串操作(分割、替换、查找)strconv
:字符串与其他类型转换(Atoi
, ParseBool
)示例:
s := "hello,world"
parts := strings.Split(s, ",") // ["hello", "world"]
num, _ := strconv.Atoi("123") // 字符串转整数
database/sql
功能:通用 SQL 数据库接口
常见用途:
mysql
, postgres
)Query
, Exec
)示例:
db, _ := sql.Open("mysql", "user:pass@tcp(localhost:3306)/dbname")
rows, _ := db.Query("SELECT * FROM users")
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)
}
}
context
功能:请求上下文管理
常见用途:
WithCancel
, WithTimeout
)示例:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// 将 ctx 传递给需要超时控制的函数
crypto
和 hash
功能:加密与哈希算法
常见用途:
示例:
h := sha256.New()
h.Write([]byte("secret"))
fmt.Printf("%x", h.Sum(nil)) // 输出 SHA-256 哈希
log
功能:日志记录
常见用途:
SetPrefix
)示例:
log.SetFlags(log.Ldate | log.Lshortfile)
log.Println("Error occurred!")
flag
功能:命令行参数解析
常见用途:
StringVar
, IntVar
)Parse
)示例:
var port int
flag.IntVar(&port, "port", 8080, "server port")
flag.Parse()
fmt.Println("Port:", port)
regexp
功能:正则表达式
常见用途:
示例:
re := regexp.MustCompile(`^[a-z]+\[[0-9]+\]$`)
match := re.MatchString("user[123]") // true
sort
功能:排序
常见用途:
Ints
, Strings
)Interface
接口)示例:
nums := []int{3, 1, 4}
sort.Ints(nums) // [1, 3, 4]
container
功能:容器数据结构
包含子包:
heap
:堆实现list
:双向链表ring
:环形链表示例:
lst := list.New()
lst.PushBack(1)
lst.PushFront(0)
math
和 math/rand
功能:数学运算与随机数
常见用途:
Max
, Sqrt
)Intn
, Seed
)示例:
rand.Seed(time.Now().UnixNano())
fmt.Println(rand.Intn(100)) // 0~99 随机数
html/template
功能:HTML 模板渲染
常见用途:
示例:
tmpl := template.Must(template.ParseFiles("index.html"))
tmpl.Execute(w, data) // 渲染模板并写入 ResponseWriter
Go 标准库的特点:
io.Reader
)实现灵活扩展。官方文档:https://pkg.go.dev/std
掌握这些库可覆盖 80% 的日常开发需求,第三方库通常基于标准库扩展(如 Gin
基于 net/http
)。