Go问答技术文章
-
区分Go HTTP客户端单次请求预算、响应体读取与外层重试总耗时,提供绑定Context并限制读体大小的示例,解释阶段超时、错误记录和资源释放。415 收藏 -
新增依赖没有出现在 Go vendor 中时,按模块图确认、重新执行 go mod vendor,再用 vendor/modules.txt 和 -mod=vendor 构建验证,避免手工修改 vendor。415 收藏 -
Go go-flags 使用 *int 字段可以区分未传参数与显式传入 0:未传时指针为 nil,传入 0 时指针非空但目标值为 0;带 default 标签时再结合 IsSet 和 IsSetDefault 判断值的来源。415 收藏 -
ShiftJIS 的字节边界不一定等于字符边界,逐字节调用 Go 解码器会让日文字符失去配对关系。本文说明 japanese.ShiftJIS 的 Decoder、transform.Bytes 和 Reader 应如何选择,并给出分块乱码与 U+FFFD 的排查方法。414 收藏 -
解释 Go uniseg 的 StepString 为什么要把 newState 传回下一次调用,区分 state、rest 与 boundaries,并给出连续分段和常见错误的简洁示例。414 收藏 -
Go 的 http.Client 会根据重定向目标判断是否转发 Authorization。本文从第一跳与下一跳的请求头基线入手,解释敏感头为何跨域丢失,并给出用 CheckRedirect 限制信任边界的安全写法。413 收藏 -
Go 1.25 将 testing/synctest 正式纳入标准库。本文用并发回调和 context 超时场景说明如何用 bubble、Wait 与虚拟时间替代真实等待,并梳理网络阻塞、死锁和版本边界。413 收藏 -
解释Gonum插值器区间外预测的包级合同与PiecewiseLinear端点行为,给出显式拒绝、夹取及来源标记的原创包装示例与理论结果对照。413 收藏 -
Go atomic.Value 的第一次 Store 会建立具体动态类型契约,后续 Store、Swap 和 CompareAndSwap 必须保持一致。本文说明零值、Config 快照、并发读取与常见 panic 的排查边界。412 收藏 -
fsnotify 的 Add 只登记传入的单一路径,不会把子目录自动加入 watcher。本文说明这个边界,并用启动扫描加新增目录补登记的方式构造可维护的递归监听。412 收藏 -
Go llrb 的 ReplaceOrInsert 依据 Item.Less 的排序等价判断是否替换,不比较结构体整体值或指针地址。本文用业务键示例说明返回值、Less 契约与可变字段边界。412 收藏 -
Go time.Parse 出现差几个小时,通常不是时间被随机改写,而是输入中的时区信息与解析 API 的默认语义不一致。本文对比数字偏移、时区缩写、ParseInLocation 和 Time.In 的使用边界。411 收藏 -
io.TeeReader 没有内部缓冲,读取过程会把数据同步写给 Writer;如果 Writer 写入失败,错误会沿 Reader 的 Read 返回。本文从接口职责、n 与 err 的判断和适用边界解释这个看似延迟的错误。410 收藏 -
Go x/text/search 不是按字节或 rune 逐个比较文本,而是结合语言规则生成可比较的排序元素。因此带重音、大小写、宽度差异,甚至展开与合并关系的文本,可能在不同原始长度下匹配。本文说明 Matcher 选项、IndexString 返回区间和 Pattern 复用边界。410 收藏 -
Scanner.End 返回 token.Pos。若要得到文件名、行号和列号,应使用初始化 Scanner 时的 token.File.Position 转换;所谓 PositionEnd 不一致通常是类型、字节偏移或合成 token 边界混用造成的。409 收藏