Go问答技术文章
-
解释 filepath.WalkDir 回调返回 fs.SkipDir 时的目录跳过和文件级遍历终止语义,并用可运行示例验证判断顺序。226 收藏 -
Go 的 netip.ParseAddr 能解析普通 IPv6,但带有 %eth0 这类区域标识的地址还要看输入格式与后续用途。本文用最小代码说明 zone 的保留边界、Addr 与 AddrPort 的区别,以及监听和日志场景如何避免误判。146 收藏 -
Go 的 net/http.Header.Get 只返回一个值。本文用可复现的响应头示例说明 Header.Get、Header.Values 与 Header.Add 的关系,帮你判断何时该读取单值、何时必须遍历全部值。155 收藏 -
自定义断言函数不调用 testing.TB.Helper 时,测试失败位置常常落在断言库内部,排查成本很高。本文用一个最小断言函数说明 Helper 如何改变失败行号、为什么要放在函数入口,以及在 TB 接口、子测试和并发调用中的边界。239 收藏 -
Go 的 bytes.Cut 适合按首个分隔符拆出 before、after 和 found 三个结果。本文从空片段、缺少分隔符和请求头解析中的误判出发,说明如何用 found 区分合法空值与格式错误。466 收藏 -
Go 的 base64 解码遇到截断或非法字符时,会返回部分结果和 CorruptInputError。本文用 DecodeString、Decode 和 RawStdEncoding 对比补位、换行与错误位置的判断方式。404 收藏 -
Go io.Pipe 的写入端提前关闭时,读取端可能看到 io.EOF 或具体错误。本文用最小示例梳理 Close、CloseWithError、Read 返回值和排查顺序。428 收藏 -
io.ReaderAt 的 ReadAt 可能同时返回已读字节和 io.EOF。本文用可运行示例拆开 n、len(p) 与 err 的判断顺序,说明文件尾、部分读取和完整读取时的安全处理方式。263 收藏 -
用 runtime/trace.NewTask 给跨 goroutine 的业务操作建立可追踪边界,说明 context.Context 如何传播任务、task.End 如何收口,以及 trace.WithRegion 与 go tool trace 的分工。307 收藏 -
bytes.Buffer Reset 只把当前长度归零,不会自动擦除底层数组。本文用 Bytes、Reset 和 Write 的实际关系解释旧切片为何还能读到内容,并给出安全复用与释放引用的判断方法。144 收藏 -
http.Header.Get 找不到请求头和请求头值为空时都会返回空字符串。本文用 http.Header、Header.Get 与逗号 ok 判断拆开这两个状态,并给出适合接口校验的写法。482 收藏 -
Go 泛型调用省略类型参数时,编译器要从实参、函数签名和约束中建立类型关系。本文用可编译示例说明推断成功与失败的边界,以及何时补写显式类型参数。450 收藏 -
调用 context.WithCancel 只能发出取消信号,不能替你证明子协程已经结束。本文用一个可复测的 worker 示例说明如何结合 ctx.Done、defer wg.Done 和 Wait 确认退出,并指出常见的提前返回与阻塞边界。424 收藏 -
Go 程序放进容器后,runtime.GOMAXPROCS 返回的并发上限和宿主机核数不一定相同。本文用运行时探针区分逻辑核、CPU 配额与调度上限,解释容器内核数判断的边界,并给出可复现的检查代码。447 收藏 -
Go 1.25 为 go doc 增加 -http 选项,可以把指定对象的本地文档通过浏览器查看。本文用 net/http 演示启动方式、端口排查和文档范围判断。470 收藏