Go语言技术文章
-
Go 接口输入不必把清洗、字段校验和前端契约拆成三套规则。本文用一个原创注册请求示例说明如何组织原地规范化、错误处理、JSON Schema 生成,以及何时应切换到带上下文的显式 Pipeline。287 收藏
-
JWT 的 exp 只回答令牌是否过期,不能证明内容可信。本文用 Go 和 golang-jwt/jwt 走一遍验证顺序:先限制签名算法,再校验签名、issuer、audience 与时间字段,最后用可测试的时钟偏差和失败日志收口。286 收藏 -
Go 1.27 为 go doc 增加 -ex,并支持 package@version 查询。本文用 bytes.ExampleBuffer 演示如何找到可执行示例,说明模块版本边界、输出范围和旧工具链的兼容检查。286 收藏 -
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 收藏 -
slices.DeleteFunc 适合按条件批量删除切片元素,但回调遍历的是原切片语义,不能在回调里再改同一个切片。本文用可运行示例拆开保序删除、索引变化和尾部清零带来的内存边界,并给出何时改用一次性筛选。285 收藏 -
Go 1.27 的链接器可用 -macos 与 -macsdk 写入 Mach-O 的 LC_BUILD_VERSION。本文说明两个参数分别控制什么、为什么最低系统声明不等于真实兼容,以及发布前如何核对。285 收藏 -
用 Go 标准库为内部 HTTP 工具增加 Basic 认证,讲清服务端 BasicAuth、客户端 SetBasicAuth、401 挑战、HTTPS 和凭据校验边界。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 的 CheckRedirect 返回自定义错误时,Response 可能仍非空但 Body 已关闭;如果要读取最后一次响应,应返回 http.ErrUseLastResponse,并在调用方负责读取和关闭 Body。285 收藏 -
用最小 Go HTTP 接口排查 URL 查询值乱码,定位手工拼接、加号语义、重复编解码与非 UTF-8 上游问题。285 收藏 -
Go 1.22 起可用 AppendEncode 把 Base64 结果追加到现有切片。本文讲清容量预估、dst[:0] 复用、返回值接收与底层数组所有权边界。285 收藏 -
用 context.WithCancelCause 把请求取消的真实原因带过边界,并通过 errors.Is、context.Cause 和并发测试确认错误链没有丢失。284 收藏