Go语言技术文章
-
用 Go 标准库 log/slog 的 Handler.WithGroup 组织请求、用户和数据库字段,比较文本与 JSON 输出,并验证自定义 Handler 的实现边界。485 收藏 -
用 Go 的 io.Pipe 把压缩器输出和 HTTP 请求串成一条流,说明读写端协作、错误传递、请求结束和可复查验证的关键边界。485 收藏 -
Go 读取邮件时,mail.ReadMessage 负责拆分邮件头,中文 Subject 用 mime.WordDecoder.DecodeHeader 解码,中文 From 则用带 WordDecoder 的 AddressParser 解析;遇到 GBK 等字符集时再补 CharsetReader。485 收藏 -
Go 处理跨夏令时的日期范围时,不要把一天硬编码成 24 小时。本文用 time.Location 绑定 IANA 时区,以左闭右开方式构造本地日期边界,并说明 AddDate 与 Duration 的使用区别。485 收藏 -
Go defer 会不会覆盖显式 return,关键不在 return 写没写值,而在 defer 是否能访问函数的命名结果参数。本文用执行顺序、闭包捕获和 defer 参数求值三个角度拆开这个常见误区。485 收藏 -
用 time.ParseDuration 解析带单位的毫秒和秒输入,再通过范围校验保护超时、重试和定时器配置,避免裸数字和单位误解。485 收藏 -
Go 的方法值 x.M 在创建时就会保存接收者,后续调用不会自动读取变量的新值。本文用值接收者、指针接收者和回调场景说明副本边界,并给出排查与修复清单。485 收藏 -
atomic.Value 适合发布读多写少的完整配置快照,但第一次 Store 会锁定具体类型,nil 与类型混用会 panic。本文给出 *Config 封装、深拷贝规则、基准方法及 atomic.Pointer 取舍。485 收藏 -
Go 的实验性 simd API 不把向量宽度写进类型。本文说明如何用 Len 动态分块,并用 Part 接口正确处理不足一个向量的切片尾部。485 收藏 -
Go 在 riscv64 上出现结构体复制后 []byte 内容异常,通常不是切片共享导致,而是编译器优化写回错误。本文用 issue #80127 的复现现象拆开判断边界,并给出 CI 对照与升级检查清单。484 收藏 -
解释 Go interface 装入 nil 指针后仍不等于 nil 的原因,拆开动态类型和值的比较规则,并给出 error 返回、类型断言与反射边界的实用处理方式。484 收藏 -
Go 动态拼接正则表达式时,先用 regexp.QuoteMeta 转义用户输入,才能让点号、括号、加号等字符按字面匹配;本文同时说明模式结构、Compile 错误和替换模板的边界。484 收藏 -
Go 服务端中间件读取 http.Request Body 后,下游为什么只能拿到空内容?关键在于 Body 是一次性读取流,读取后要用缓存字节重建 Request.Body,并同时控制请求体大小与错误分支。484 收藏 -
Golang · Go教程 | 2星期前 | 性能优化 · Go教程 · net/http · 兼容性 · Preload Go net/http ErrNotSupported http.Pusher HTTP/2 Server Push Early Hints
Go 的 http.Pusher 仍可探测,但 Push 在客户端禁用或连接不支持时会返回 ErrNotSupported。更稳的资源加载方案是以最终 HTML 为主,按首屏预算组合 preload 与 103 Early Hints,把 Push 降级为可选加速。484 收藏 -
区分Go http.Client.Timeout与Transport阶段超时,明确拨号、TLS、响应头、响应体和业务代码的时间边界。484 收藏