Go语言技术文章
-
Go 1.27 支持具体类型泛型方法,但指针接收者的方法集和可寻址规则没有改变。本文用可编译与不可编译示例说明变量、map 元素、临时值、方法表达式和接口调用的限制。249 收藏 -
用 maps.EqualFunc 比较不同值类型的 Go map,讲清键类型约束、eq 回调、string 与 []byte 转换、缺键和性能边界。249 收藏 -
Go CookieJar 在本地 HTTP 测试中不发送 Secure Cookie,通常是 http scheme 不满足 Secure 属性。本文拆开保存、筛选与客户端注入职责,说明 HTTPS 测试和普通 HTTP 单测的选择边界。249 收藏 -
本文用一个多生产者、多消费者示例说明如何把固定容量的 Go Channel 作为排队上限:缓冲区满时生产者自然阻塞,并通过方向约束、context 取消、WaitGroup 和单点关闭保证生命周期安全。248 收藏 -
本文用 go mod tidy -diff、go mod why 和 go mod graph 建立可回滚的依赖整理流程,解释新增、删除、版本变化和 indirect 注释变动的真实含义。247 收藏 -
复用 gzip.Reader 时看到旧数据,通常不是 Reset 失效,而是把 Reader 内部状态、输入源位置和调用方输出缓冲混在了一起。本文用 Reset、EOF、ErrChecksum 与 Multistream 说明正确的复用边界。247 收藏 -
zip.NewReader 需要 io.ReaderAt 和压缩包总大小,HTTP 响应体却通常只能顺序读取。本文用 RangeReaderAt 把 HTTP Range 适配成随机读取,并说明 206、Content-Range、目录定位和错误边界。246 收藏 -
本文解释 cgo 中 C 代码为什么不能随意长期保存 Go 指针,并对比 runtime/cgo.Handle、runtime.Pinner 与 C 自有内存三种安全方案。245 收藏 -
Go 可以用 io.Pipe 将 ZIP 生成器直接接到 HTTP 请求体,实现边生成边上传而不落整包临时文件。本文给出可取消、可传递错误的完整写法,并说明无缓冲背压、关闭顺序、重试和 Content-Length 限制。245 收藏 -
从输出目标、上下文转义、危险 URL 和 template.HTML 信任边界对比 Go 的 html/template 与 text/template,给出迁移和选型清单。245 收藏 -
Go 多层模板迁移到 embed.FS 后,可在启动期解析公共布局,再为每个页面 Clone 独立模板集合并覆盖 content 块。本文给出目录结构、完整渲染器、变更风险与回归清单,避免工作目录依赖和同名定义串页。245 收藏 -
Go 标准库 uuid.Parse 接受大小写等多种文本形式,但解析后保存的是 16 字节 UUID 值,String 会统一输出 RFC 9562 定义的小写连字符形式。本文说明比较、存储、日志、签名与原文保留边界。245 收藏 -
Go 1.25 的 net/http.CrossOriginProtection 可在业务处理器前拒绝非安全的跨站浏览器请求。本文说明判断规则、Handler 接入方式、可信 Origin 配置与兼容边界,并给出适合 Cookie 会话表单写接口的完整示例。245 收藏 -
Go 迁移到 ML-KEM 时,不要把后量子算法简单替换或直接拼接共享秘密。本文以 crypto/mlkem 和传统 ECDH 为例,说明协商、上下文绑定、HKDF 派生与失败即拒绝的组合方式。245 收藏 -
用 go list -m -u -json all 生成 Go 模块清单,再用 govulncheck -json ./... 保存漏洞结果,在持续集成中按调用栈、修复版本和周期任务持续跟踪依赖安全。244 收藏