Go教程技术文章
-
用 Go slog.LogValuer 为包含 token 和邮箱的业务对象定义安全日志表示,只输出 request_id、账号后缀和状态摘要;同时说明 LogValuer、Value.Resolve 与 ReplaceAttr 的职责边界。398 收藏 -
strings.Builder 的 Grow 只预留后续字节容量,String 后继续写入通常不是禁用操作;真正需要警惕的是复制非零 Builder、误把容量当长度,以及负数参数触发 panic。398 收藏 -
Go 测试里用 testing.TB.Setenv 设置临时环境变量,再用 t.Cleanup 管理关联状态,可以让测试结束后自动恢复。本文说明清理顺序、并行边界和可执行检查方法。398 收藏 -
Go net/url 中 PathEscape 与 QueryEscape 都是 URL 转义函数,但服务的语义边界不同。本文用特殊字符对比、URL 结构写入和解码检查,说明路径参数与查询参数的正确选择。398 收藏 -
Go maps.Clone 可以复制 map 并让键级修改彼此独立,但它只做浅拷贝。本文从普通值、nil、空 map、自定义类型和切片 value 说明使用边界,并补上并发快照注意事项。398 收藏 -
Go 的 ascii85.NewDecoder 接收 io.Reader,会跨底层 Read 边界保留未完成编码组。本文用 io.MultiReader 连接分段输入,说明 EOF 收尾、<~ ~> 包装符、CorruptInputError、限流与生产验收方法。398 收藏 -
用 Go iter.Seq 封装数据库 keyset 分页,把查询延迟到遍历发生时,并在提前停止、扫描错误和上下文取消时正确结束查询与释放 sql.Rows。398 收藏 -
Go sonyflake 通过 Settings.StartTime 设置 ID 时间字段的坐标原点。本文给出 v2 的配置写法,并按起始时间、机器号、生成结果三层排查创建失败和取不到 ID 的原因。398 收藏 -
Go filepath.Split 会在最后一个操作系统路径分隔符后拆出目录和文件名,并保留目录部分的分隔符。本文用一个小程序说明常见输入、末尾分隔符、连续分隔符,以及它和 filepath.Dir、filepath.Base 的区别。398 收藏 -
Golang · Go教程 | 2个月前 | HTTP · 连接池 · Go教程 · 性能排查 · net/http · Go HTTP客户端 连接复用 Transport httptrace Response.Body
Go HTTP 客户端请求量上来后,如果 Response.Body 没有按路径读取并关闭,或每次请求都新建 Transport,连接池就很难稳定复用。本文从一个连接数异常的服务场景出发,用 httptrace 验收复用结果,并给出响应体、Transport 参数和回归检查的落地写法。397 收藏 -
用 Go 的 container/heap 实现一个按优先级领取任务的队列,说明 Less、Push、Pop、heap.Init、heap.Fix 的配合方式,以及指针接收者、索引同步和并发使用边界。397 收藏 -
Go compress/gzip 写入结束时要区分 Flush 与 Close:Flush 只推送待写压缩数据,Close 才会刷新剩余数据并写入 GZIP footer,且不会自动关闭底层文件或连接。397 收藏 -
Go archive/zip.File.Open 返回的是 io.ReadCloser。本文区分条目读取器与 ZIP 归档读取器的关闭责任,并给出单条函数、批量遍历和错误处理的安全写法。397 收藏 -
跨语言二进制结构体经常因为 C 或 Python 的对齐填充导致 Go binary.Read 读错字段。本文用显式空白字段、固定字节序和完整错误处理,给出可移植的读取方式。397 收藏 -
Go 解析 JSON 请求时,默认宽松解码、Decoder 严格校验和 RawMessage 扩展区分别适合什么场景?本文用原创示例说明未知字段、必填校验与接口演进的取舍。397 收藏