Go问答技术文章
-
Go log/slog 的 LogValuer 会把昂贵计算推迟到日志事件确实需要处理时。本文用最小示例说明禁用级别、启用 handler、结构化 Group、脱敏和 Logger.With 的边界。318 收藏 -
从一个一次性迭代器出发,拆开 slices.SortedFunc 的收集、比较与返回边界,说明如何处理结构体排序、空序列和比较器契约。317 收藏 -
讲清 Go 的 json.Marshal 对 map 键的支持边界:字符串、整数和 encoding.TextMarshaler,以及结构体、浮点数等键的替代方案。317 收藏 -
Go billy 的 OpenFile 中,O_CREATE 只负责目标不存在时创建,O_TRUNC 负责打开已有文件时清空内容。本文用 memfs 与 osfs 的接口语义对比新建、覆盖、追加和排他新建,避免误删旧文件。317 收藏 -
Golang · Go问答 | 2星期前 | HTTP客户端 · Go问答 · Go HTTP代理 net/http Transport ProxyConnectHeader GetProxyConnectHeader CONNECT
Go 的 ProxyConnectHeader 只服务于 HTTP 代理的 CONNECT 建隧道请求,不是发往目标站点的普通请求头。本文按代理选择、固定配置、动态回调和证据排查四步定位“请求头缺失”,并解释 GetProxyConnectHeader 覆盖 ProxyConnectHeader 的关键关系。317 收藏 -
Go 的 Request.Context 取消只是通知,HTTP Handler 是否退出取决于代码有没有把取消信号传到阻塞点并主动返回。本文按请求、下游调用、goroutine 和响应写入四个边界排查这个问题。317 收藏 -
Go 的 netip.Addr.String 会保留 IPv6 Zone;真正容易丢失 Zone 的位置通常是 As16、AsSlice、net.IP 转换或 Prefix。本文按字符串化、结构化比较和转换边界说明如何定位问题。317 收藏 -
说明 Go Lumberjack 的 LocalTime 为什么只影响轮转备份文件名,并用标准库 log 和自定义 formatter 分别配置日志正文时间格式。317 收藏 -
Go NATS 客户端的 Flush 只完成一次连接到服务器的往返确认,不代表异步消费者的回调已经执行完。本文区分服务器处理、客户端投递、业务完成和 JetStream ack,并给出可落地的判断方式。317 收藏 -
Go roaring 的 Bitmap.And/Or 会把结果写回当前对象,而 roaring.And/Or 返回新的位图。本文用集合示例、共享指针风险和回归清单说明如何选择,避免重构时误改输入集合。317 收藏 -
Golang · Go问答 | 2个月前 | 标准库 · 错误处理 · IO · 文件读取 · Go问答 · Go LimitReader eof Reader io.LimitedReader 读取上限
io.LimitedReader 读完 N 个字节后会先把 N 变成 0,并在下一次读取时返回 EOF;这和底层 Reader 是否已经到达结尾不是一回事。本文用可运行示例拆开上限耗尽、真实 EOF 和底层错误的判断边界。316 收藏 -
用一个一次性初始化场景拆开 atomic.Bool.CompareAndSwap 的成功与失败路径,说明它如何把状态切换和抢占执行权合成原子动作,以及失败后何时跳过、何时重试。316 收藏 -
交叉编译启用 cgo 失败,通常不是 GOOS/GOARCH 写错,而是缺少目标平台 C 编译器、头文件、库或链接器。本文给出定位顺序、构建命令与纯 Go 替代方案。316 收藏 -
Go 的 sql.DB 是连接池句柄,而 sql.Tx 绑定事务连接。事务内部如果继续调用 DB.Query,查询可能落到另一条连接,读不到未提交数据。本文说明边界、改法与回滚收口。316 收藏 -
解释 Go runtime.KeepAlive 为什么要紧跟系统调用放置,帮助排查 finalizer 过早关闭文件描述符导致的偶发 EBADF。316 收藏