Go语言技术文章
-
Golang · Go问答 | 1星期前 | 标准库 · 测试 · 环境变量 · Go问答 · 排错 · 环境变量 Go 并行测试 Go test 测试隔离 Go升级 testing.T.Setenv
Go 版本升级后如果 testing.T.Setenv 的结果看起来变了,先核对 Go 版本契约,再排查 t.Parallel、子测试祖先和环境变量读取时机。本文比较三条定位路径,并给出可直接复现的最小测试与修复选择。377 收藏 -
Go 的 macho.OpenFat 返回 ErrNotFat 时,通常只说明文件不是 universal binary 但可能是普通 Mach-O。本文解释魔数判定、错误分支、资源关闭和不能盲目回退的边界。377 收藏 -
本文说明 Go net/http 中 http.ProtocolError 的用途与弃用边界,演示如何保留错误链并区分传输错误、协议错误和 HTTP 状态码,最后给出可复用的最小诊断示例。377 收藏 -
用 Go filepath.EvalSymlinks 解析符号链接后的目标路径,区分相对路径、目标缺失、权限错误和链接循环等边界。376 收藏 -
解释Go模块checksum mismatch的含义,按项目记录、缓存、代理和版本改写定位差异,提供独立缓存诊断命令,并说明删除go.sum或关闭认证为何不能代替修复。376 收藏 -
Go multipart 解析报 boundary 缺失,通常是 Content-Type 只有 multipart/form-data 却没有 boundary 参数。本文从客户端组包、请求头和服务端解析三个位置排查,并给出 FormFile、ParseMultipartForm 与流式 MultipartReader 的正确用法。376 收藏 -
Go debug/dwarf LineReader可在无行表时返回nil且无错误。本文说明编译单元输入要求、三种返回状态及Next的EOF处理,避免空指针和调试信息误判。376 收藏 -
Gonum 的 BellmanFordFrom 用 ok=false 报告负环,而不是返回 error。本文说明如何检查全局失败信号、用 Shortest.To 和 -Inf 定位受影响节点,并把诊断结果与正常最短路严格分开。376 收藏 -
Go json.Decoder 可能在 Decode 时提前读取底层 Reader。本文用 Buffered、io.MultiReader 和边界检查,把尚未消费的字节安全交给后续流式解析。376 收藏 -
Go log/slog.Logger.With 会返回带公共属性的派生 logger,适合复用组件名、请求 ID 和任务 ID。本文按字段生命周期说明 With 与单条日志参数的分工,并给出原 logger、并发请求和 Handler 边界的实用写法。376 收藏 -
Go 的 hash/crc32 提供 IEEE、Castagnoli 等 CRC-32 多项式。本文从协议兼容、内部数据完整性和流式计算三个角度说明如何选表,并给出可复用的 Checksum 与 New 示例。376 收藏 -
解释 Go httptest.ResponseRecorder.Code 为零的真实含义,比较 Code 与 Result().StatusCode 的断言边界,并给出 HTTP handler 测试中的状态、Header 和 Body 读取清单。376 收藏 -
Go 普通 map 发生并发读写时可能直接触发 concurrent map read and map write。本文按排障顺序说明如何确认写入边界、用 RWMutex 修复,以及什么时候才适合换成 sync.Map。375 收藏 -
Go select 中多个 case 同时就绪时,不按源码顺序固定选择,而是在可继续的通信中做均匀伪随机选择。本文说明怎样识别最终分支、区分表达式求值与通信执行,并处理 default、nil 和 closed channel 的边界。375 收藏 -
Go atomic.Int32 适合保存一个可原子读取和更新的 int32 状态。本文用有限状态示例说明 CompareAndSwap 的 expected、next 与 bool 返回值怎样配合,解释 CAS 失败、状态回退、结构体复制和多字段一致性等边界。375 收藏