Go问答技术文章
-
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 收藏 -
Go currency.Cash 与 Accounting 按用途选择舍入属性。本文说明 scale 和 increment 的区别,给出参数查询代码,并区分规则记录、格式化展示和实际金额计算。316 收藏 -
go-runewidth 的全局函数都绑定 DefaultCondition,独立 Condition 则保存自己的宽度策略。本文拆开两种作用域、CreateLUT 缓存和多终端配置的取舍。316 收藏 -
Go go-wav 中,WAV 每帧字节数由每通道采样字节数和声道数共同决定。本文用公式解释位深、Block Align、Byte Rate 的关系,并给出读取 Decoder 字段的示例。316 收藏 -
Go 接口中的 nil 指针不一定等于 nil 接口。本文用最小代码对比 typed nil 的成因,并给出 error 返回、调用方检查、errors.Is 与 errors.As 的安全处理清单。316 收藏 -
Go 文件关闭、EOF 和缓冲读取属于不同状态。通过直接读取、缓冲层和提前关闭的示例,解释错误差异的来源,并用明确的资源归属与错误链分类修复导入流程。315 收藏 -
Go 用较短内容覆盖旧文件时不会自动删除尾部字节,使用 os.File.Truncate 按新长度截断,并注意文件偏移、写权限和并发边界。314 收藏 -
Go 中把 nil 指针作为 error 返回后,接口会保留具体动态类型,因此 err 可能不等于 nil。本文用代码说明 typed nil 的形成原因、成功分支的正确返回方式,以及类型断言排查时的边界。313 收藏 -
Go transform 的 ErrShortDst 表示输出空间不足。本文区分容量信号与输入校验,说明返回计数、连续状态及零进展处理,并给出完整转换函数。312 收藏 -
Go encoding/json 处理嵌入结构体时,如果同一层级出现同名字段,JSON 标签会参与候选筛选;唯一候选会被使用,多个同优先级候选则可能全部忽略且不报错。本文用最小示例拆开字段层级、标签优先级和排查方法。312 收藏 -
从 GOTOOLCHAIN、go.mod/go.work 的 go 与 toolchain 行出发,解释 Go 工具链为何自动切换,以及 auto、path、local 和固定版本在开发、CI、离线环境中的差异。311 收藏