Go语言技术文章
-
Go token.FileSet.RemoveFile 后,原来的 Pos 区间不会再被 FileSet.File 或 FileSet.Position 找到,但保留的 *token.File 仍可用于文件级位置换算。本文拆开两层语义,并给出适合流式解析器的释放顺序。210 收藏 -
通过一个可控的流复制小项目说明 io.TeeReader 的同步写入语义、写端错误如何从 Read 返回,以及处理 n 和 err、错误包装与适用边界的正确方式。210 收藏 -
Go database/sql 的 sql.DB 是连接池。需要让一组操作落在同一个数据库会话时,可以用 DB.Conn 获取独立连接;操作结束必须调用 Conn.Close 将连接归还池中,并用上下文控制等待时间。209 收藏 -
Go 的 crypto/rand.Read 保证填满目标切片且不把随机源错误作为普通返回值;需要观察短读、EOF 或可替换 Reader 时,应使用 io.ReadFull,检查 n 与 err,并丢弃不完整随机字节。209 收藏 -
runtime.Gosched 只能让出当前处理器,不能替代 channel、锁或条件等待。本文从调度语义、GOMAXPROCS、忙等和阻塞边界出发,给出把无效让出改成可控同步的排查方法。209 收藏 -
Go pprof 阻塞 profile 没有数据时,重点检查 SetBlockProfileRate、pprof 路由、采集窗口和真实阻塞事件。本文给出最小配置、读取命令和排查边界。209 收藏 -
用 Go hash/fnv 把稳定字符串映射为分片编号,讲清 FNV-1a、UTF-8 字节、32/64 位选择、取模边界与扩容迁移风险。209 收藏 -
Go 的 URLEncoding 和 RawURLEncoding 使用同一套 URL-safe 字母表,但一个保留等号填充、一个去掉填充,因此不能随意交叉解码。本文从错误现象、协议边界和历史数据兼容三个角度说明如何选择编码器。209 收藏 -
Go 判断 IP 是否为回环地址时,优先把文本解析为 netip.Addr,再调用 IsLoopback。本文区分 IPv4、IPv6、映射地址、未指定地址和零值 Addr 的边界。209 收藏 -
Go database/sql 的 Tx.Commit 会把提交动作交给底层驱动,连接中断、事务上下文取消或事务已结束都可能让调用方得到错误。本文按错误边界说明如何判断提交结果,以及为什么不能对未知状态盲目重试。209 收藏 -
Go RIFF 声明长度超过实际输入时应返回截断错误。本文说明头部解析成功的限制,并给出总长度比较、块数据计数和完整扫描的处理写法。209 收藏 -
GOPROXY=direct 只负责绕过模块代理并直接访问版本控制仓库,私有依赖仍需正确配置 GOPRIVATE、认证方式和 GOVCS。本文按路径、认证、仓库发现与代理策略给出排查顺序。209 收藏 -
Go select 在多个通信 case 同时就绪时会从可继续的分支中选择一个,case 的书写顺序不是优先级。本文解释 ready 集合、default、关闭 channel 和两层 select 的边界,并给出需要显式优先级时的仲裁迁移方式。209 收藏 -
Golang · Go问答 | 1星期前 | HTTP · Cookie · Go问答 · 排错 · Go Set-Cookie http.Cookie ParseSetCookie Unparsed
Go net/http 解析 Set-Cookie 时,无法映射到 Cookie 已知字段的属性会以原始片段进入 Unparsed;语法错误则通过 error 返回。本文说明怎样读取 Unparsed、如何记录未知属性,以及为什么不能把 Cookie.String 当作未知属性的回写器。209 收藏 -
Go testing.T.TempDir 会在测试及其子测试结束后自动清理。本文用 T.ArtifactDir、-artifacts 和失败前复制说明怎样保留关键测试现场,同时避免把临时目录误当成长期产物。209 收藏