Go问答技术文章
-
text/template 默认会把缺失 map 键静默变成空值。本文用 missingkey=error 配合模板执行,定位字段拼写错误发生的阶段,并给出可运行的测试验收方法。286 收藏 -
Go 解包 tar 时,先把 Header.Name 当成不可信输入,拒绝绝对路径、.. 路径和链接条目,再用 filepath.IsLocal 与 filepath.Rel 把目标限制在根目录内;词法检查通过后仍要单独考虑符号链接和文件系统竞态。286 收藏 -
解释 Go sort.Search 返回 len 的真实含义,演示如何用边界检查和候选值比较区分目标不存在、末尾插入与实际命中。286 收藏 -
Go runtime/pprof 调整采样间隔时,关键不是把数字调大,而是让采样率、采样窗口和负载保持可比。本文用 StartCPUProfile 与 SetCPUProfileRate 说明参数边界、代码写法及 pprof 结果的正确读法。286 收藏 -
Go 1.27 的链接器可用 -macos 与 -macsdk 写入 Mach-O 的 LC_BUILD_VERSION。本文说明两个参数分别控制什么、为什么最低系统声明不等于真实兼容,以及发布前如何核对。285 收藏 -
Golang · Go问答 | 4星期前 | 反射 · Go问答 · Go reflect.ValueOf typed nil Value.IsValid Value.IsNil nil interface
reflect.ValueOf(nil).IsValid() 返回 false,不是反射失效,而是 nil interface 没有动态类型,ValueOf 返回了 zero Value。本文对比 nil interface 与 typed nil,并给出安全的 IsValid、Kind、IsNil 判断顺序。285 收藏 -
用最小 Go HTTP 接口排查 URL 查询值乱码,定位手工拼接、加号语义、重复编解码与非 UTF-8 上游问题。285 收藏 -
Go 的 multipart.Writer 设置自定义 boundary 时,必须在创建第一个 Part 前完成。本文解释调用顺序、请求头一致性、参数限制与排查清单。284 收藏 -
errors.Join 会先丢弃 nil,并统计剩余错误;当非 nil 数量为零时直接返回 nil。文章结合结果矩阵、标准库源码、错误树检查和 typed nil 边界说明这一设计。284 收藏 -
errors.Is 匹配不到自定义包装错误,通常不是错误文本的问题,而是 %w 包装链、Unwrap 关系、自定义 Is 方法集或值指针形态出了偏差。本文用对照代码和测试拆开三类失败。283 收藏 -
Go 程序明明访问 HTTPS,结果却一直使用 HTTP/1.1,排查时不要只盯着 ForceAttemptHTTP2。本文按客户端声明、TLS 握手选择和 HTTP 实际协议三个层次,说明应记录的字段、常见冲突以及最小复现代码。283 收藏 -
Go 测试断言抽成辅助函数后,t.Helper 如何让失败行号回到测试调用点,以及多层断言包装该怎样逐层标记。283 收藏 -
讲清 Go fs.WalkDir 中 SkipDir 与 SkipAll 的区别:目录剪枝、普通文件上的特殊语义、全局提前结束、普通错误和上下文取消的正确处理方式。283 收藏 -
用 Go execution trace 观察 goroutine 的阻塞区域,掌握 trace 文件采集、task/region 标记、go tool trace 阅读和 pprof 导出方法。283 收藏 -
Go 内置 copy 对源和目标切片的重叠有语言规范保证,复制结果不受内存区间是否重叠影响。本文给出切片左移删除、右移插入的可靠写法,并说明返回数量、容量和并发边界。283 收藏