Go教程技术文章
-
Go 1.25 让 Linux 容器中的默认 GOMAXPROCS 感知 cgroup CPU 配额,并提供 runtime.SetDefaultGOMAXPROCS 重新启用默认值。本文从升级风险、代码改动和验收证据三方面给出迁移清单。394 收藏 -
Go 处理大文件时不要先读入完整 []byte。本文用 base64.NewEncoder 和 io.Copy 流式转换,说明 encoder.Close 的必要性,并比较标准、URL 安全和无填充 Base64 的适用场景。394 收藏 -
Go 的 encoding/csv 开启 ReuseRecord 后,保存记录应复制返回的 []string 外层切片,而不是逐个重建字符串。本文说明复用边界、异步投递时机、ReadAll 差异和可直接采用的代码写法。394 收藏 -
flag.TextVar 可以把命令行文本直接交给自定义类型的 UnmarshalText。本文以 LogLevel 为例,说明接口分工、默认值写法、错误处理,以及如何把同一解析规则复用于 JSON 配置。394 收藏 -
pkg.go.dev 的正式 JSON API 可把 Go 包导入路径解析为 modulePath,再分页读取该模块的版本集合。本文给出 curl 与 Go 标准库实现,并说明路径歧义、跨主版本、伪版本、撤回标记、分页令牌和限流的处理方法。394 收藏 -
Go csv.Writer 的 Write 返回 nil 不代表整份 CSV 已完成输出。本文给出 Write、Flush、Error 的最小写法、WriteAll 变体和失败目标示例,说明成功判断的时机与底层目标边界。394 收藏 -
go list -json 可以直接给出 Go 包的 EmbedPatterns、EmbedFiles 以及测试嵌入字段。本文按普通包、内部测试包和外部测试包拆解查询方式,并说明如何把结果交给检查脚本。394 收藏 -
用 Go slices.Replace 替换切片的半开区间,掌握替换元素数量变化时的长度计算、底层数组复用和越界边界。394 收藏 -
Go mod why 展示的是从主模块到目标包的最短包级引入路径。本文结合实际排查依赖的经历,说明普通查询、-m、-vendor 与 go mod graph 的区别,以及出现未引用提示时怎样判断。394 收藏 -
Go 的 norm.Properties(...).BoundaryBefore() 用来判断当前 rune 是否开启新的规范化片段。本文从单点判断讲到 NextBoundaryInString,说明如何在 UTF-8 分块输入中找到不会切断组合标记的安全位置。394 收藏 -
Go slices.EqualFunc 用自定义 eq 函数按索引比较两个切片,长度不同直接返回 false,比较器首次返回 false 时停止。本文结合跨类型字段比较,说明比较器签名、空切片边界和副作用控制。394 收藏 -
用 cel.Variable 声明 CEL 输入变量,配合 Env.Compile 和 Env.Program 编译可复用的 Go 筛选表达式,并区分编译期与求值期错误。394 收藏 -
用 Go 的 go-diff/diffmatchpatch 从旧文本和新文本生成可保存的补丁,接收端解析后应用到基线文本,并正确处理逐项失败结果。394 收藏 -
Go 中 len 统计 UTF-8 字节数,utf8.RuneCountInString 统计 rune 数量。本文结合有效性检查和截断场景,说明两者结果不同的原因及选择方法。393 收藏 -
Go 的 runtime.KeepAlive 不是强制 GC,也不是替代 Close;它用于把对象的最后安全使用点明确到低层调用返回之后,避免终结器过早关闭底层句柄。本文用文件描述符和 cgo 资源说明放置位置、职责边界与生产检查项。393 收藏