Go问答技术文章
-
新增依赖没有出现在 Go vendor 中时,按模块图确认、重新执行 go mod vendor,再用 vendor/modules.txt 和 -mod=vendor 构建验证,避免手工修改 vendor。415 收藏 -
Go go-flags 使用 *int 字段可以区分未传参数与显式传入 0:未传时指针为 nil,传入 0 时指针非空但目标值为 0;带 default 标签时再结合 IsSet 和 IsSetDefault 判断值的来源。415 收藏 -
Go 原生 fuzz 测试发现 panic 后,先固定失败语料并用 -run 稳定重放,再定位最小输入边界、修复校验逻辑,最后保留 corpus 作为回归测试资产。414 收藏 -
Golang · Go问答 | 2星期前 | 标准库 · JSON · Go问答 · Go encoding/json offset json.Unmarshal Field JSON排错 UnmarshalTypeError
Go 的 JSON 类型错误不要只看错误字符串。本文用 UnmarshalTypeError 的 Field、Offset、Value 和 Type 四个字段,把嵌套字段与原始 JSON 字节位置对应起来,并说明类型错误后的部分填充边界。414 收藏 -
ShiftJIS 的字节边界不一定等于字符边界,逐字节调用 Go 解码器会让日文字符失去配对关系。本文说明 japanese.ShiftJIS 的 Decoder、transform.Bytes 和 Reader 应如何选择,并给出分块乱码与 U+FFFD 的排查方法。414 收藏 -
解释 Go uniseg 的 StepString 为什么要把 newState 传回下一次调用,区分 state、rest 与 boundaries,并给出连续分段和常见错误的简洁示例。414 收藏 -
本文解释 Go 泛型约束 comparable 的类型集合与设计边界,说明切片、map、函数和接口为何不能一概而论,并用泛型去重函数展示 Go 1.20 之后的约束满足规则与运行时风险。414 收藏 -
Go 项目已有 vendor 目录却没有使用时,先检查主模块根目录、go.mod 的 go 版本、GOFLAGS 或 -mod 覆盖项,再用 go mod vendor 同步 vendor/modules.txt,并用 -mod=vendor 确认构建路径。413 收藏 -
Go 的 http.Client 会根据重定向目标判断是否转发 Authorization。本文从第一跳与下一跳的请求头基线入手,解释敏感头为何跨域丢失,并给出用 CheckRedirect 限制信任边界的安全写法。413 收藏 -
Go 1.25 将 testing/synctest 正式纳入标准库。本文用并发回调和 context 超时场景说明如何用 bubble、Wait 与虚拟时间替代真实等待,并梳理网络阻塞、死锁和版本边界。413 收藏 -
解释Gonum插值器区间外预测的包级合同与PiecewiseLinear端点行为,给出显式拒绝、夹取及来源标记的原创包装示例与理论结果对照。413 收藏 -
Go XML Decoder 关闭 Strict 可容忍部分缺失标签与实体错误。通过小样本 Token 对照说明容错边界,区分解析成功、字符映射、HTML 兼容和业务数据正确性。412 收藏 -
Go atomic.Value 的第一次 Store 会建立具体动态类型契约,后续 Store、Swap 和 CompareAndSwap 必须保持一致。本文说明零值、Config 快照、并发读取与常见 panic 的排查边界。412 收藏 -
fsnotify 的 Add 只登记传入的单一路径,不会把子目录自动加入 watcher。本文说明这个边界,并用启动扫描加新增目录补登记的方式构造可维护的递归监听。412 收藏 -
Go llrb 的 ReplaceOrInsert 依据 Item.Less 的排序等价判断是否替换,不比较结构体整体值或指针地址。本文用业务键示例说明返回值、Less 契约与可变字段边界。412 收藏