Go问答技术文章
-
Go 错误建模可按调用方需求选择:只需判断固定条件时用哨兵错误,需要读取操作、资源或原因等字段时用自定义类型。本文给出 Is、As、%w、组合模式、信息边界与兼容性检查。145 收藏 -
Go 的 http.Cookie 设置 SameSite 后,浏览器是否发送还要看站点关系、请求凭据、Secure 和 Path。本文按请求链路定位 Cookie 不见的原因。144 收藏 -
Go tls.Config 复用时,Certificates 不会随 PEM 文件自动更新。本文用 GetCertificate 和 atomic.Value 实现安全证书轮换,并说明 SNI、Clone、旧连接与失败回滚边界。144 收藏 -
Golang · Go问答 | 3天前 | goroutine · Context · 并发编程 · 故障排查 · Go问答 · channel WaitGroup Go context ctx.Done 阻塞排查 context.Canceled
Context 取消只会关闭 Done 通道,不会自动打断 channel 收发、WaitGroup、Mutex、Sleep 或不支持 Context 的 I/O。本文按取消链、阻塞点和下游 API 三层给出排查与修复方法。144 收藏 -
bufio.Writer 会把第一次底层写入错误保存在内部,后续 Write 和 Flush 都返回这项粘性错误。本文说明部分写入、io.ErrShortWrite、Reset 与安全重试的边界。143 收藏 -
gif.EncodeAll 要求 Image、Delay 与非 nil Disposal 按帧对齐。本文给出严格检查、同步筛帧和受控补齐的安全写法。143 收藏 -
Go net.ParseIP 解析 IPv4 时返回十六字节是因为采用了 IPv4-mapped IPv6 表示。本文说明如何用 To4 判断地址族、转换四字节数据,并区分 Equal、To16、ParseCIDR 与 netip 的使用边界。142 收藏 -
解释 Go archive/tar 在 tarinsecurepath=0 下返回 ErrInsecurePath 的原因,给出条目名检查、链接处理和安全解包边界。142 收藏 -
encoding/json/v2 解码到 any 时,JSON 数字仍默认使用 float64。本文给出两种避免精度丢失的写法:已知结构直接声明整数类型,动态结构通过 WithUnmarshalers 保留 jsontext.Value,再按业务显式转换。142 收藏 -
并行基准测试不能把 RunParallel 回调里的 PB.Next 直接替换成 B.Loop。本文区分普通基准循环与并行工作分配,给出 B.Loop 迁移范围、RunParallel 正确写法、计时器边界和 Go 版本兼容检查。142 收藏 -
Golang · Go问答 | 3星期前 | pprof · Go问答 · go tool pprof Go pprof.Lookup Go运行时剖面导出 pprof.WriteTo Go heap剖面
Go pprof.Lookup 可以按名称取得运行时剖面,再通过 WriteTo 导出为 pprof 文件。本文给出 nil 判断、debug 参数、文件关闭和 go tool pprof 核对的完整写法。141 收藏 -
Golang · Go问答 | 3天前 | go · 文件上传 · 流式处理 · 内存优化 · net/http · 流式读取 ParseMultipartForm Go HTTP服务 MaxBytesReader Go大文件上传 MultipartReader
Go 大文件上传内存暴涨,常见原因不是 multipart 本身,而是 io.ReadAll、bytes.Buffer 等整份复制。本文解释 maxMemory 的真实边界,并给出 MaxBytesReader 与 MultipartReader 的流式落盘方案。141 收藏 -
Golang · Go问答 | 3星期前 | 依赖管理 · 工程实践 · Go问答 · Go workreplace go.work replace作用域 Go多模块工作区 Go本地依赖替换 Go CI依赖解析
Go 没有 go workreplace 子命令,通常指 go.work 中的 replace。本文用 use、replace、GOWORK 和 go list -m 说明工作区成员、本地替换、版本范围与 CI 下游边界。140 收藏 -
解释 Go url.JoinPath 为什么会在输出中保留或生成百分号编码,区分 URL.Path、RawPath、EscapedPath、PathEscape 与 QueryEscape,并处理斜杠和点段边界。140 收藏 -
Go 的 gzip.Reader 默认会连续读取拼接的 gzip 成员。本文用原创示例拆开 Multistream、Reset、io.ByteReader、EOF 与尾随数据的边界,帮助你选择整体解压或按成员处理。140 收藏