Go语言技术文章
-
Go 里 context.WithTimeout 设置的超时可能比预期更早,因为子 Context 的截止时间不会晚于父 Context。本文用父子 deadline、ctx.Done 和 cancel 说明如何定位提前结束,并给出可复查的调用边界。289 收藏 -
Go 服务收到请求取消后,如何让审计写入、指标上报等短收尾任务继续完成?用 context.WithoutCancel 保留值但切断取消信号,并补上独立超时。311 收藏 -
Go 中复用 time.Timer 时,Reset 之前必须先处理可能残留的通道信号;否则循环可能立刻走旧分支。本文用一个可运行的轮询例子说明 Stop、<-timer.C、Reset 和 ctx.Done 的边界。175 收藏 -
Golang · Go问答 | 3天前 | 错误处理 · net/http · Go问答 · HTTP认证 · net/http Request.BasicAuth HTTP Basic Auth Go认证
net/http.Request.BasicAuth 返回的 ok 布尔值用于区分没有 Basic Authentication 与用户名密码为空。本文用请求头样例和可运行测试拆开三种边界,避免把空密码误判成未认证。400 收藏 -
slices.Concat 合并结构体切片时只复制结构体元素值,不会递归复制其中的指针、切片或 map 字段。本文用可运行示例区分元素隔离与引用字段共享,帮助判断修改结果后的影响范围。390 收藏 -
Go 1.22 引入的 slices.Concat 可以按顺序合并多段同类型切片。本文核对它的泛型签名、空输入返回 nil、结果切片与源切片的隔离关系,并给出容量和自定义切片类型的判断方法。444 收藏 -
用 Go 1.23 的 iter.Seq 把回调式迭代接入 range,拆清 yield 返回值、break 提前停止和错误传递的边界。235 收藏 -
Go 1.24 用 go:wasmexport 把 Go 函数暴露给 WebAssembly 宿主。本文从 WASI reactor 和宿主调用实验入手,核对导出顺序、参数类型和初始化边界。425 收藏 -
解释 filepath.WalkDir 回调返回 fs.SkipDir 时的目录跳过和文件级遍历终止语义,并用可运行示例验证判断顺序。226 收藏 -
Go 的 netip.ParseAddr 能解析普通 IPv6,但带有 %eth0 这类区域标识的地址还要看输入格式与后续用途。本文用最小代码说明 zone 的保留边界、Addr 与 AddrPort 的区别,以及监听和日志场景如何避免误判。146 收藏 -
Go 的 io.Copy 会优先尝试 WriterTo 和 ReaderFrom 快路径。本文用可复现的接口实现拆开选择顺序,并说明何时回退到缓冲复制。138 收藏 -
Go 的 net/http.Header.Get 只返回一个值。本文用可复现的响应头示例说明 Header.Get、Header.Values 与 Header.Add 的关系,帮你判断何时该读取单值、何时必须遍历全部值。155 收藏 -
Go 中 os.Rename 在同一文件系统里适合做临时文件提交,但跨文件系统时可能返回 invalid cross-device link。本文从错误现场出发,写出可检查、可回退、不会把半成品当正式文件的保存流程。154 收藏 -
自定义断言函数不调用 testing.TB.Helper 时,测试失败位置常常落在断言库内部,排查成本很高。本文用一个最小断言函数说明 Helper 如何改变失败行号、为什么要放在函数入口,以及在 TB 接口、子测试和并发调用中的边界。239 收藏 -
用 bytes.Clone 复制 []byte 时,重点不是语法,而是确认结果与原切片不共享可写元素,并验证空输入的 nil 边界。406 收藏