Go语言技术文章
-
bytes.Buffer 的 Grow 不是越大越好:它只保证后续写入有足够空间,Len 与 Cap 观察到的是不同维度。本文用请求拼装和最小测试说明如何估算容量、何时提前 Grow,以及如何验证扩容是否真的减少了分配。234 收藏 -
slices.Clone 和 append 都能复制 Go 切片,但容量、底层数组别名和空切片行为并不完全相同。本文用可运行示例说明如何判断拷贝是否隔离,以及在并发和接口返回中该怎么选。276 收藏 -
Go 结构体嵌入让外层类型获得更短的字段和方法访问路径,但多个嵌入成员出现同名字段或方法时,编译器会按层级和提升规则处理。本文从一个真实的编译错误切入,拆解显式访问、同级冲突和方法集变化,并给出排查清单。360 收藏 -
Golang · Go问答 | 3星期前 | 并发 · golang · csv · 数据处理 · Go问答 · 数据导入 encoding/csv csv.Reader Go问答 ReuseRecord 切片复用
encoding/csv.Reader 开启 ReuseRecord 后,Read 返回的记录切片会复用底层数组。本文用导入任务中的异步保存场景说明字段为什么会被后续行覆盖,以及什么时候必须复制记录。465 收藏 -
Golang · Go教程 | 3星期前 | 标准库 · golang · 性能优化 · 接口设计 · 性能优化 Go字符串 缓冲区复用 encoding.TextAppender MarshalText
Go 1.24 的 encoding.TextAppender 让类型可以直接把文本追加到已有字节缓冲区,适合日志、协议编码和批量格式化场景。本文从 MarshalText 的临时分配问题出发,说明 AppendText 的实现边界、错误传播和可验证的基准写法。245 收藏 -
Golang · Go问答 | 3星期前 | 并发 · net/http · HTTP客户端 · Go问答 · Go header 请求体 http.Request.Clone WithContext HTTP重试
http.Request.Clone 和 WithContext 都能生成带新上下文的请求,但它们对 Header、URL、Body 和并发使用的约束不同。本文用一次 HTTP 重试场景拆开两者的复制边界,给出安全写法和验收检查。173 收藏 -
Go 1.23 引入 iter.Pull 后,调用方可以把 push 迭代器改成 next 读取,但停止时机和资源释放不能靠猜。本文用可运行示例拆解 next、stop、done 的边界,定位 goroutine 泄漏,并给出取消、回滚与告警检查办法。423 收藏 -
讲清 Go time.Timer 复用时 Stop、Drain 和 Reset 的调用边界,并区分 Go 1.23 新语义与旧版本写法,用最小循环和检查清单避免旧值、阻塞与并发复用问题。328 收藏 -
用一个可迁移的 Go 泛型 API 例子,解释约束中的 ~T 如何放宽命名类型匹配范围,以及它对调用方兼容性、返回值设计和后续演进的影响。389 收藏 -
Go 的 net.Conn.SetDeadline 会把读写截止时间写入连接状态,超时后不会因为下一次读写自动恢复。本文用一个连接复用场景说明清理时机、读写边界和可验证的修复写法。277 收藏 -
在 Go 服务中把外部 DTO 隔离在防腐层,能把供应商字段变化挡在接口边界外;本文用订单状态同步示例说明映射、校验、版本兼容与测试验收如何落地。406 收藏 -
Go 里用 CmdContext 设置超时后,父命令返回并不等于整棵子进程树已经退出。本文用可复查的命令场景解释 context 取消、Wait 返回、子进程残留和回收验证之间的边界,给出带退出状态检查的处理方式。470 收藏 -
用 Go 处理连续 JSON 流时,Decoder.Token、Decode 和 Buffered 的边界很容易被误读。本文从两个 JSON 连在一起的现场出发,验证读取位置、解释看似吞值的原因,并给出可复查的多对象解析写法。435 收藏 -
Golang · Go问答 | 3星期前 | 错误处理 · go · 数据库 · 排查 · SQL · rows.Close rows.Next Rows.Err Go database/sql 空结果
Go 查询 database/sql 时,Rows.Next 返回 false 不一定代表空结果。本文用一个分页查询故障拆开 Next、Err、Close 的职责,给出可复用的遍历模板、异常定位顺序与资源收尾检查。444 收藏 -
time.Ticker.Stop 只负责停止后续计时,不承诺把已经进入通道的值清空。本文从定时刷新任务的退出现场出发,拆解停止语义、旧值竞态、goroutine 泄漏与可验证的退出写法。467 收藏