Go问答技术文章
-
Go 自定义证书链验证失败时,先把 Roots、Intermediates 和 KeyUsages 分开检查:根证书决定信任锚,中间证书负责补链,KeyUsages 决定用途约束。339 收藏 -
Go 1.27 的 vet 会提示一种容易被忽略的错误包装问题:把实现 error 的值类型错误用指针形态传给 %w,随后 errors.As 按指针类型匹配就会失败。本文用最小代码区分值类型、指针类型和 As 目标,给出修复写法与排查清单。339 收藏 -
Go x/text/encoding/unicode 解码 UTF-16 时,代理项只是代码单元,必须由高代理项和低代理项配对才能还原补充平面字符。本文说明孤立代理项为何变成 U+FFFD,以及字节序、BOM 和流式 ErrShortSrc 的排查方法。339 收藏 -
用 Go os.Root 和 Root.Open 把外部文件名限制在可信目录树内,说明 OpenFile、Root.FS、资源关闭与挂载边界。339 收藏 -
用一个可复现的小例子拆开 strings.CutPrefix 与 HasPrefix 加切片的差别,重点核对 found 返回值、空前缀、相同前缀和 UTF-8 字符边界。338 收藏 -
io.MultiWriter 会把一次写入依次交给多个 Writer;只要某个目标返回短写或错误,调用方就必须按返回字节数和错误值判断是否完整。本文用可复现实验拆解 ErrShortWrite 的触发边界、失败顺序和安全核对方式。338 收藏 -
解释 Go 的 net/url.PathEscape 只负责单个 URL 路径段的原因,并用 url.JoinPath、URL.Path 和 EscapedPath 处理资源地址拼接中的斜杠、编码与路径边界。338 收藏 -
Go 泛型函数使用 == 报 cannot use T as comparable 时,重点检查 any 约束是否过宽。本文说明 comparable 的正确用法、与方法约束的组合、接口运行时边界,以及类型不可比较时如何改用比较键。338 收藏 -
解释 Go goroutine 因为没人接收 channel 而长期阻塞的原因,并用 context、select、关闭责任和等待机制设计可退出的发送路径。338 收藏 -
Golang · Go问答 | 1个月前 | Context · HTTP客户端 · Go问答 · Go请求超时 Go clienttimeout http.Client Timeout Go客户端超时 Transport阶段超时
本文解释 Go http.Client.Timeout 的总时限范围,并用请求级 context 与 Transport 阶段参数区分不同客户端边界。338 收藏 -
Golang · Go问答 | 1个月前 | go · Context · Go问答 · context.Cause Go context.WithCancelCause CancelCauseFunc Go 上下文取消原因 Go 下游读取取消原因
讲清 Go context.WithCancelCause 返回的 CancelCauseFunc 如何把具体错误传给下游,以及 context.Cause 与 ctx.Err 的区别、取消顺序和资源清理边界。338 收藏 -
Go netip.Prefix 解析 CIDR 后为什么还保留主机位?关键在于 ParsePrefix 和 PrefixFrom 都不会替调用者自动掩码。本文说明 Prefix、Masked、Contains 的职责边界,并给出在展示、存储和地址匹配边界处统一规范化的写法。338 收藏 -
Go pprof heap 报告定位不了内存泄漏,通常不是命令少,而是采集窗口、inuse 与 alloc 指标、采样率没有分开处理。本文给出一套可重复的采集和阅读顺序。338 收藏 -
Go WebSocket 断开后没有马上出现错误,常见原因是程序没有持续读取连接。本文用 Gorilla WebSocket 说明 CloseError、读循环、关闭处理器和读超时的边界。338 收藏 -
Go io.CopyN 短输入通常返回 EOF,而非 ErrUnexpectedEOF。结合已写字节数和原始错误判断失败,理解部分写入、错误包装、重试与资源提交的边界。338 收藏