Go语言技术文章
-
Go 的 URL.Fragment 保存解码语义,RawFragment 仅是原始编码提示。本文说明 EscapedFragment 如何验证并保留 %2F 等表示,以及修改、构造和批量输出时如何避免二次编码。348 收藏 -
Go net/url 处理中,查询参数、动态路径片段和完整 URL 不能共用一种编码方式。本文用 url.Values、QueryEscape、PathEscape 与 EscapedPath 说明如何只编码查询参数并保留路径斜杠。347 收藏 -
Go checkptr 报错通常可归到指针对齐、跨分配对象或指针算术越界三类问题。本文结合 unsafe.Pointer、uintptr 和原始分配对象,说明如何定位并修复不安全转换。347 收藏 -
bytes.Reader 的 Seek 只计算并保存逻辑游标,因此正数位置可以超过底层切片末尾;真正读取时才返回 io.EOF。本文结合源码语义说明原因、后续行为和严格边界写法。347 收藏 -
Golang · Go教程 | 1星期前 | 错误处理 · 数据校验 · Go教程 · Go compress/gzip ErrChecksum gzip.Reader io.ErrUnexpectedEOF
Go 的 gzip.Reader 只有在完整读取到 gzip trailer 后才能完成 CRC32 和原文长度校验。本文用原创示例说明如何区分截断数据、校验和错误、非法头部与正常 EOF。347 收藏 -
从滚动日志窗口的实际场景出发,解释 slices.Clip 如何把切片容量收紧到长度,说明它与 slices.Clone、底层数组和 GC 回收之间的边界。346 收藏 -
Go 的 Cmd.WaitDelay 用来限制子进程退出后 I/O 管道迟迟不关闭造成的 Wait 阻塞。本文用一个可运行的小实验拆开超时、管道关闭和退出状态的关系,并给出安全的错误判断方式。346 收藏 -
用 Go 和原生前端表单搭一套可恢复的重复提交处理:客户端按钮状态负责体验,服务端幂等键负责最终一致,超时后通过查询接口确认结果。346 收藏 -
Go 1.27 新增 strings.CutLast,适合把最后一次分隔符查找与切分写成一次调用。本文用路径、域名和空结果示例说明替代边界、兼容范围与测试方法。346 收藏 -
讲清 Go time.Timer Reset 返回值的真实含义,比较 Go 1.23 前后的通道语义,并给出单 goroutine、旧版本排空和发布检查的实用写法。346 收藏 -
通过 encoding/csv.Reader 的 ReuseRecord 复用字段切片,介绍流式 CSV 读取中的即时处理、表头跳过、记录复制和分配基准边界,避免把可复用切片错误地交给异步任务或长期缓存。346 收藏 -
应弃用 gin.Default(),改用 gin.New() 手动注册中间件,将自定义 panic 捕获中间件置于首位,使用 c.AbortWithStatusJSON() 统一响应,区分业务 error 与 panic,避免中间件内未 recover 导致崩溃。默认的 gin.Default()345 收藏 -
context.WithoutCancel 会保留父 Context 的值,但切断取消、截止时间和 Err 传播。本文用请求收尾场景说明它的适用边界、调用链写法和超时风险,避免把它当成无限期后台执行开关。345 收藏 -
用 Go crypto/x509 验证证书链时,Roots 决定信任锚,Intermediates 只负责补链,VerifyHostname 还要单独核对主机名。本文用最小代码说明三者的边界与排错顺序。345 收藏 -
Go 中向 nil channel 发送会永久阻塞,本文从运行时语义、排查路径和修复边界说明如何定位声明遗漏、select 门控与退出控制问题。345 收藏