Go语言技术文章
-
Golang · Go问答 | 1个月前 | 微服务 · Context · go并发 · 错误诊断 · 请求取消 · Go 错误处理 context.WithCancelCause context.Cause 取消原因 ctx.Err
服务日志里只出现 context canceled 时,ctx.Err() 只能告诉你流程停了,却说不清是用户取消、上游超时还是业务主动终止。本文用 Go 1.20 引入的 context.WithCancelCause 和 context.Cause 改造一个批量查询场景,说明旧代码影响、兼容边界、错误分类与最小验证方法。465 收藏 -
Golang · Go问答 | 1个月前 | 超时 · Context · 并发控制 · Go问答 · 请求生命周期 · Go 后台任务 Deadline 请求取消 context.Cause context.WithoutCancel
context.WithoutCancel 可以让派生上下文忽略上游取消,但它会同时失去 Deadline、Err 和 Done。本文用 HTTP 请求收尾场景对比 WithoutCancel、WithTimeout 和 WithCancelCause,给出可验证的后台任务边界和回归指标。465 收藏 -
Golang · Go教程 | 3星期前 | 内存 · 标准库 · go · 性能 · bytes.Buffer · go bytes.Buffer Buffer.Available Buffer.Grow ErrTooLarge
Go bytes.Buffer 的 Available 能告诉你当前还能直接写入多少字节,但它不是总容量,也不能替代 Grow 的容量规划。本文用批量拼接 HTTP 响应的场景,说明 Available、AvailableBuffer、Append、Grow 与 ErrTooLarge 的边界,并给出可回归的检查方法。465 收藏 -
Golang · Go问答 | 2星期前 | 并发 · golang · csv · 数据处理 · Go问答 · 内存复用 · 数据导入 encoding/csv csv.Reader Go问答 ReuseRecord 切片复用
encoding/csv.Reader 开启 ReuseRecord 后,Read 返回的记录切片会复用底层数组。本文用导入任务中的异步保存场景说明字段为什么会被后续行覆盖,以及什么时候必须复制记录。465 收藏 -
Go 1.27 将 runtime/pprof 的 goroutineleak profile 正式开放,用垃圾回收可达性发现一部分永久阻塞的 goroutine。本文说明采集入口、HTTP 端点、可识别范围和全局可达对象造成的漏检边界。465 收藏 -
Go 读取同名 Cookie 时,Cookie 方法只返回一个值;本文用 CookiesNamed 和 ParseCookie 保留头部顺序,并说明服务端无法从请求头反推出 Path、Domain、SameSite 与过期时间。465 收藏 -
Go HTTP 请求已经超时,但服务端日志还在继续时,先分清客户端、请求上下文和服务端 deadline 三个边界,再检查下游是否真正收到 ctx,最后用 Err 与 Cause 记录责任归属。465 收藏 -
Go 请求同时设置 http.Client.Timeout 和 context.WithTimeout 时,最早到期的边界会取消请求。本文用截止时间、错误类型和受控实验判断超时来源,并给出生产环境的配置取舍。465 收藏 -
Go bytes.Reader 同时支持顺序读取、绝对偏移读取和定位。本文区分 Len、Size、ReadAt、Seek 的职责,并用 io.SectionReader 固定下游可见的缓冲区间。465 收藏 -
DecodeRuneInString 遇到非法 UTF-8 时返回 RuneError 和 1,而空字符串返回 RuneError 和 0。掌握 size 的含义,才能在逐字节清洗和校验循环中既不死循环,也不误删后续合法字符。464 收藏 -
Go 实现 UnmarshalJSON 时直接调用 json.Unmarshal 会递归。本文用定义类型切断方法集,再补上错误处理、业务校验和嵌套字段边界。464 收藏 -
Golang · Go问答 | 1天前 | 重定向 · 排查 · Cookie · net/http · Go问答 · 重定向 Go Cookiejar http.Client CheckRedirect http.Cookie
Go http.Client 跟随重定向时,会在每个目标 URL 上重新咨询 CookieJar。Cookie 是否发送取决于目标域、Path、Secure 和有效期;Domain 未设置时是 host-only Cookie。本文用最小探针解释 CheckRedirect、CookieJar 与跨子域重定向的边界。464 收藏 -
Golang · Go教程 | 1个月前 | 切片 · Slices · Go教程 · Go 1.21 · 切片删除 Go教程 Go slices.Delete slices.DeleteFunc Go 1.21
Go 标准库 slices.Delete 会返回修改后的切片。本文用一个最小实验说明为什么必须接收返回值、底层数组何时仍被复用,以及批量删除时怎样避免循环删元素。463 收藏 -
Golang · Go教程 | 1个月前 | golang · sse · Go教程 · net/http · 接口设计 · HTTP Go SSE FLUSH 流式响应 ResponseController
Go 的流式响应不是把多次 Write 拼起来就结束了。本文从 http.ResponseController.Flush 入手,做一个可验证的 SSE 示例,解释缓冲何时真正送达、HTTP/2 与代理会带来什么差异,以及客户端断开后如何让 goroutine 和 ticker 及时收口。463 收藏 -
Go 1.27 针对小对象的专用内存分配器可降低分配成本,但它不会替服务端回收仍被引用的对象。本文用请求缓冲、缓存切片和 goroutine 三个边界,说明如何判断分配变快与对象活得过久是两件事。463 收藏