Go问答技术文章
-
用一个可复现的小例子拆开 strings.CutPrefix 与 HasPrefix 加切片的差别,重点核对 found 返回值、空前缀、相同前缀和 UTF-8 字符边界。338 收藏 -
io.MultiWriter 会把一次写入依次交给多个 Writer;只要某个目标返回短写或错误,调用方就必须按返回字节数和错误值判断是否完整。本文用可复现实验拆解 ErrShortWrite 的触发边界、失败顺序和安全核对方式。338 收藏 -
解释 Go 的 net/url.PathEscape 只负责单个 URL 路径段的原因,并用 url.JoinPath、URL.Path 和 EscapedPath 处理资源地址拼接中的斜杠、编码与路径边界。338 收藏 -
Go 泛型函数使用 == 报 cannot use T as comparable 时,重点检查 any 约束是否过宽。本文说明 comparable 的正确用法、与方法约束的组合、接口运行时边界,以及类型不可比较时如何改用比较键。338 收藏 -
解释 Go goroutine 因为没人接收 channel 而长期阻塞的原因,并用 context、select、关闭责任和等待机制设计可退出的发送路径。338 收藏 -
Golang · Go问答 | 3星期前 | Context · HTTP客户端 · Go问答 · Go请求超时 Go clienttimeout http.Client Timeout Go客户端超时 Transport阶段超时
本文解释 Go http.Client.Timeout 的总时限范围,并用请求级 context 与 Transport 阶段参数区分不同客户端边界。338 收藏 -
Golang · Go问答 | 3星期前 | go · Context · Go问答 · context.Cause Go context.WithCancelCause CancelCauseFunc Go 上下文取消原因 Go 下游读取取消原因
讲清 Go context.WithCancelCause 返回的 CancelCauseFunc 如何把具体错误传给下游,以及 context.Cause 与 ctx.Err 的区别、取消顺序和资源清理边界。338 收藏 -
Go 1.26 的实验性 runtime/secret 通过 secret.Do 清理密码学临时数据。本文用一条短命密钥处理链说明启用方式、适用边界和不能替代的安全措施。337 收藏 -
Go 1.27 调整了 //line 与 /*line*/ 中相对文件名的解析方式:它们现在相对包含指令的源文件目录解析,而不是依赖启动编译命令时的工作目录。本文用生成代码目录示例拆解路径、行列号和跨版本核对方法。337 收藏 -
Go 并发代码里,atomic.Pointer[T] 适合发布一个可整体替换的指针,sync.Mutex 适合保护多个字段组成的不变量。本文按读写模式、对齐和混用风险给出选择方法。337 收藏 -
Go 中 context deadline exceeded 表示截止时间到期,context canceled 表示主动取消。本文用 errors.Is、ctx.Err 和 context.Cause 说明判断边界、错误包装与日志重试处理。337 收藏 -
Go runtime/pprof 可以把请求分类信息写进 CPU Profile 的样本标签。本文用 pprof.Do 建立请求边界,再用 go tool pprof 的 tags、tagfocus 和 tagroot 分析路由热点,并说明标签继承、覆盖和高基数边界。337 收藏 -
Go io.Copy 返回 short write 时,问题通常在目标 Writer:它少写了数据却没有返回具体错误。本文用返回值、Writer 契约和 WriterTo/ReaderFrom 快路径区分读端错误与写端短写。336 收藏 -
Go sync.Pool 的 Get 不保证返回刚 Put 的对象,池内元素也可能被自动移除。本文用最小代码说明 Get、Put、New 的边界,并给出复用临时对象时的排查清单。336 收藏 -
Go 处理大文件上传时,不要直接把请求体读进内存。本文用临时文件串起流式写入、大小校验、SHA-256 校验和原子替换,说明每一步为什么存在,以及失败时怎样清理。335 收藏