这一版怎么学
- 01 · min、max 与 clear
简化最值选择,复用缓冲区前清理旧数据。
- 02 · slices 泛型切片工具
处理有序数据和简单集合查询。
- 03 · slog 结构化日志
让请求、任务和业务实体拥有可检索的日志字段。
min、max、clear 减少样板,slices 提供泛型集合操作,slog 支持结构化日志。
查看发布说明 ↗已有 Go 基础可从示例开始;首次学习建议先完成 Go Tour ↗ 中的函数、切片、接口与并发部分。历史版本用于理解演进,新项目选用受支持的正式版本。
简化最值选择,复用缓冲区前清理旧数据。
处理有序数据和简单集合查询。
让请求、任务和业务实体拥有可检索的日志字段。
官方发布说明 ↗ · 核对于 2026-10-06
新增内置最值函数和清空映射、归零切片元素的 clear。
怎么用简化最值选择,复用缓冲区前清理旧数据。
旧版做法手写比较分支和逐项删除循环。
注意事项clear(slice) 不改变长度和容量;min / max 不是可接收 slice... 的普通变参函数。
官方依据 ↗ · 最低版本 1.21 · 核对于 2026-10-06
运行示例保存为 main.go,在 go.mod 声明 go 1.21 或以上的项目中执行 go run .
package main
import "fmt"
func main() { values := []int{3, 8}; fmt.Println(min(3, 8), max(3, 8)); clear(values); fmt.Println(values) }3 8 [0 0]
slices 提供 Sort、Clone、Contains 等常见切片操作。
怎么用处理有序数据和简单集合查询。
旧版做法使用 sort 包、手写查找或自行复制切片。
注意事项Sort 修改原切片;Clone 是浅拷贝,嵌套对象仍可能共享。
官方依据 ↗ · 最低版本 1.21 · 核对于 2026-10-06
运行示例保存为 main.go,在 go.mod 声明 go 1.21 或以上的项目中执行 go run .
package main
import ("fmt"; "slices")
func main() { values := []int{3, 1, 2}; slices.Sort(values); fmt.Println(values, slices.Contains(values, 2)) }[1 2 3] true
log/slog 使用级别、消息和键值属性记录日志,可选择文本或 JSON Handler。
怎么用让请求、任务和业务实体拥有可检索的日志字段。
旧版做法拼接文本日志,或统一使用第三方结构化日志框架。
注意事项字段应保持类型稳定;示例为获得固定输出去掉时间属性,生产环境通常保留时间。
官方依据 ↗ · 最低版本 1.21 · 核对于 2026-10-06
运行示例保存为 main.go,在 go.mod 声明 go 1.21 或以上的项目中执行 go run .
package main
import ("log/slog"; "os")
func main() {
handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
ReplaceAttr: func(groups []string, attr slog.Attr) slog.Attr {
if attr.Key == slog.TimeKey { return slog.Attr{} }; return attr
},
})
slog.New(handler).Info("ready", "workers", 2)
}{"level":"INFO","msg":"ready","workers":2}没有找到匹配的中文解读。试试其他关键词,或查看下方官方目录。
自动同步官方目录,涵盖语言、标准库、弃用及迁移变化。标题保留官方原文;中文解读精选于上方。
官方目录中没有匹配项。
提示:先 slices.Clone,再 slices.Sort。
package main
import ("fmt"; "slices")
func main() { original := []int{3, 1, 2}; sorted := slices.Clone(original); slices.Sort(sorted); fmt.Println(original); fmt.Println(sorted) }[3 1 2] [1 2 3]