Go语言技术文章
-
Go 的 http.NewResponseController 能统一调用刷新、截止时间、连接接管与全双工能力。本文用场景对比和完整示例讲清选择方法与边界。194 收藏 -
json.Decoder.Decode 返回 nil 只说明成功读取了下一个 JSON 值,并不保证输入流已结束。本文用二次 Decode 与 io.EOF 检查,区分空白结尾、第二个 JSON 值和非法尾随字节。194 收藏 -
Go 进程内的反射缓存应优先直接使用 reflect.Type 做键,因为 Type 可比较并表示精确类型身份,而 Type.String 与名称并不保证唯一。本文从错误命中复盘出发,说明指针归一化、泛型实例、匿名类型及跨进程模式键的取舍。194 收藏 -
Go 私有模块报错时,GOPRIVATE、GOPROXY、GONOPROXY 与 GONOSUMDB 解决的不是同一件事。本文从实际生效配置、报错位置和企业代理场景拆分排查路径。193 收藏 -
解释 Go slog LevelVar 修改后旧 Handler 仍能生效的原因,比较动态 Leveler 与静态 slog.Level 快照,并给出配置和测试方法。193 收藏 -
Golang · Go教程 | 5天前 | 标准库 · HTTP · 文件上传 · Go教程 · Go LimitReader MaxBytesReader multipart.Reader ReadForm 表单内存
Go multipart 表单的内存限制要分三层:MaxBytesReader 保护整个请求体,ReadForm(maxMemory)控制解析预算,NextPart 配合 LimitReader 才能给单个文本字段设置精确上限。本文用错误类型和清理动作说明三种边界如何组合。193 收藏 -
Go 1.27 为 go doc 增加 package@version 查询形式。本文说明如何查看指定依赖版本的 API,并区分 go.mod、go list 与文档查询的职责。193 收藏 -
Go testing.T.Helper 只改变测试失败日志的调用层级,不改变断言结果或控制流。本文用多层断言和子测试示例说明应该在哪里标记,以及常见误区。192 收藏 -
Go encoding/json 的 omitempty 不是‘所有零值都隐藏’:本文按 bool、数字、字符串、切片、映射、数组、指针和结构体拆解省略边界,并给出可选 API 字段的建模与测试方法。192 收藏 -
Golang · Go问答 | 1天前 | 依赖管理 · go · go work sync go work vendor Go workspace inconsistent vendoring Go依赖同步
Go 多模块工作区出现 inconsistent vendoring 时,关键不是手改 vendor/modules.txt,而是先确认 GOWORK 和 use 范围,再同步工作区构建列表、整理模块依赖并重建 workspace vendor。本文给出可复用的排查、同步和 CI 验证步骤。192 收藏 -
同一个无时区日期在不同机器上出现一天偏移,通常不是日期字符串变了,而是解析位置没有明确。本文从 time.Parse 的 UTC 默认行为出发,说明 time.ParseInLocation 如何绑定 Location,并处理显式偏移、时区缩写、IANA 时区加载和夏令时边界。192 收藏 -
net/textproto 的 ReadMIMEHeader 没有公开的大小参数。本文区分自定义文本协议与 HTTP 服务端两种场景,分别用受限 reader 和 Server.MaxHeaderBytes 控制头部边界,并说明超时、头部值数量和请求体限制的区别。191 收藏 -
用 Go net.Resolver 将 DNS 名称解析与 TCP 连接拆开检查,识别 DNSError、超时、端口拒绝和路由失败,建立一套可复用的网络故障定位方法。191 收藏 -
Ticker.Reset 要求间隔严格大于零,零值或负值会直接 panic;动态配置应先解析并校验,停用周期任务则使用 Stop,并在 select 中配合 nil channel。191 收藏 -
Go os/signal.Notify 向 channel 发送时不会阻塞,缓冲已满的通知可能被丢弃。本文按退出信号、多个信号和慢消费者三类场景说明容量选择、消费循环、NotifyContext 与可靠状态记录。190 收藏