Go语言技术文章
-
Go range 遍历结构体切片时,循环变量拿到的是元素副本。本文说明为什么字段修改不会回写,并给出索引回写、指针切片和 map 结构体的正确处理方式。208 收藏 -
从一次发布后异步任务少处理的故障出发,拆解 Go worker pool 的关闭顺序:先停止接收、再关闭任务输入、让 worker 排空并由 WaitGroup 收尾,同时说明超时退出与任务持久化的边界。207 收藏 -
用 Go strings.Cut 解析 key=value 配置行,区分分隔符缺失、空值和多余分隔符,比较 strings.Split 的误判与基准结果,给出可直接落地的解析边界。207 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · 定时器 · 并发控制 · Go教程 · 工程实践 · Go 并发 定时任务 time.Ticker Ticker.Reset Ticker.Stop
服务里的定时任务需要动态调整周期时,直接替换 ticker 容易留下旧循环或多条消费路径。本文用一个可停止的刷新任务演示 time.NewTicker、Ticker.Reset、Ticker.Stop 与 ticker.C 的最小配合,说明 Reset 的边界、退出方式和复查方法。207 收藏 -
用一个共享计数器测试说明 t.Parallel 的调度边界,再配合 go test -race 和失败证据,让并发问题能稳定复现、定位并回归。207 收藏 -
Go map 多个 goroutine 同时读取通常没有读写冲突,但隐藏的刷新、延迟初始化或元素内部变更仍会触发数据竞态。本文用 RWMutex、race detector 和不可变快照拆清边界。207 收藏 -
Go ldflags -X 注入空字符串时,先确认包级 string 变量,再用 go list 获取完整 import path,最后保留参数末尾等号并运行程序复核。207 收藏 -
Go 的 FindStringSubmatch 返回 nil、空字符串和可选捕获组未命中并不是一回事。本文用命名捕获、SubexpIndex 和 SubmatchIndex 给出可靠判断方法。207 收藏 -
Golang · Go教程 | 2个月前 | JSON · 基准测试 · go · 性能优化 · 内存分配 encoding/json json.RawMessage json.Decoder Go JSON
Go 服务处理大批量 JSON 时,直接把请求体解码成完整结构体并不总是划算。本文用订单事件示例比较 json.Unmarshal、json.Decoder 和 json.RawMessage 的分配与吞吐边界,并给出可复现的基准测试写法。206 收藏 -
slices.Grow 不是无条件提速开关。本文用批量追加日志事件的场景,拆开容量预估、底层数组复用、负数参数和基准验证,给出可以落地的使用边界。206 收藏 -
从 Go 官方 issue #80141 的复现拆解 cmd/compile 在超过 1000 个包级变量和多返回值初始化下触发内部错误的边界,并给出版本对照、CI 复测与安全处置方法。206 收藏 -
Go embed 报 pattern 没匹配到文件时,先检查声明文件所属包目录、相对路径、通配符和文件存在性,再用 go list 查看 EmbedPatterns 与 EmbedFiles。206 收藏 -
Go 的 database/sql 中,QueryRow 没有记录不会立即返回错误,而是把结果放进占位 Row,直到 Scan 才返回 sql.ErrNoRows。本文说明延迟错误的原因、错误分支、NULL 字段和多行查询的选择。206 收藏 -
讲清 Go http.Client 如何借助 CookieJar 在重定向中按域名、路径和安全属性保留正确 Cookie,并给出公共后缀列表、CheckRedirect 与排查清单。206 收藏 -
Go reflect 中 ConvertibleTo、AssignableTo、CanConvert、CanSet 与接口断言职责不同。本文用命名类型、接口字段和动态值示例说明转换、赋值与断言的边界,帮助反射代码减少 panic。206 收藏