Go语言技术文章
-
Go compress/gzip 的 Write 不代表压缩流已经完成,必须调用 Writer.Close 刷新未写数据并写入 GZIP 尾部。本文说明 gzip.Writer 与底层 io.Writer 的关闭责任、defer 顺序、Close 错误处理,以及 Flush 和 Reset 的适用边界。367 收藏 -
Go 的 fs.Sub 负责把已有文件系统映射成一个子树视图,但不会主动确认目录已经存在。本文解释错误为何延后到 Open、ReadFile 或 ReadDir 等访问动作,并给出显式检查与封装方式。367 收藏 -
Golang · Go问答 | 6天前 | 标准库 · go · Go Content-Disposition mime/multipart NextPart NextRawPart quoted-printable
对比 Go multipart.Reader 的 NextPart 与 NextRawPart,说明 Content-Disposition 并非核心差异,重点解释 quoted-printable body 的透明解码边界与入口选择。367 收藏 -
Koanf 默认允许后加载的同名键覆盖前值,类型不同也不会自动报错;开启 StrictMerge 后,冲突会在 Load 时返回错误。本文用 map、字符串和切片说明合并边界,并给出多来源配置的落地策略。366 收藏 -
Go http.Server.Shutdown 会先关闭监听器和空闲连接,再等待活动请求结束;长请求、无超时下游和 hijack 长连接会让关闭看起来挂起。本文用一个小型服务说明连接边界、退出预算与排查方法。366 收藏 -
Go HTTP/2 出现连接中断、请求卡住或帧错误时,可以先用 GODEBUG 打开 net/http 的调试日志。本文按开关作用范围、日志粒度和排障顺序说明怎样取得有效线索。366 收藏 -
Go 解码无填充标准 Base64 应按协议选择 RawStdEncoding,而非随意删除等号。本文解释填充分组、解码器选择和错误时的部分数据,给出入口封装,并说明兼容迁移、Strict 与空白处理的范围。366 收藏 -
strings.Reader.Seek 的 offset 是字节偏移,whence 决定它相对开头、当前位置还是结尾计算。本文用 UTF-8、边界错误和可重复读取示例说明为什么会读到错误位置,以及如何检查返回位置和错误。366 收藏 -
用 runtime.ReadMemStats 读取 Go 内存快照,区分堆对象当前量、累计分配量与运行时系统量,给出独立局部变量采样和 JSON 输出示例,说明 RSS、GC、并发共享变量与升级回归的边界。366 收藏 -
Go slices.Grow 用来在批量追加前保证切片还有 n 个元素的容量空间。本文区分长度、容量和追加预算,说明为什么必须接住返回值,以及空切片、容量足够、负数参数和过大申请时的处理边界。366 收藏 -
用 httptest.NewServer 隔离真实上游,搭建带路由和参数约束的临时库存服务。示例覆盖地址与客户端注入、超时、重定向策略、响应断言和资源清理,并区分 Recorder、TLS 与新测试接口。366 收藏 -
Go bidirule 的流式检查必须在标签结束后确认结尾约束。文章说明 atEOF、Close 错误及跨块状态,并给出暂存输出后再交付的完整写法。366 收藏 -
Go go-echarts的普通时间坐标轴用于定位数据点,ECharts timeline用于切换多份图表快照。本文用Go示例和原生配置区分两者,并说明版本封装、时间单位与集成边界。366 收藏 -
用 Go json.Valid 快速判断原始字节是否构成完整 JSON,并厘清它与 json.Unmarshal、json.Decoder 以及字段业务校验的职责边界。366 收藏 -
通过可取消的四模式实验区分Go channel接收阻塞、nil通道和关闭状态,结合通道身份、发送路径与等待关系排查,并说明超时、len和goroutine栈能证明的范围。366 收藏