Go语言技术文章
-
Go fuzzing 找到失败输入后,怎样从日志、testdata/fuzz 目录和 -run 路径中定位首次失败案例,并把它变成稳定回归测试。282 收藏 -
signal.NotifyContext 返回的 stop 不只是结束 context,它还会注销信号接管并释放关联资源。本文用优雅退出、重复测试和短生命周期任务说明 stop 的调用时机与边界。282 收藏 -
在 Go 泛型约束中,~T 表示底层类型为 T 的全部类型,因此既能接受预声明类型,也能接受以它为底层类型的自定义类型;但方法仍须在约束中显式声明。282 收藏 -
Go pprof 火焰图中占比最高的函数不一定是最佳优化点。本文结合 flat、cum、调用路径和业务基线,说明如何判断真正值得优化的 CPU 热点并安全复测。282 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · 错误处理 · Go问答 · Go encoding/hex DecodeString InvalidByteError ErrLength 十六进制解码
Go 的 hex.DecodeString 失败时,先用 ErrLength 区分奇数长度,再用 InvalidByteError 识别非法字符,最后扫描原始输入得到字节偏移,并用脱敏日志保留可操作的排障信息。282 收藏 -
Go 1.22 起,net/http ServeMux 支持 {id} 与 {path...} 通配符。本文说明如何用 Request.PathValue 读取路径值,并梳理解码、冲突与版本兼容边界。282 收藏 -
讲清 Go netip.AddrFromSlice 对 4 字节、16 字节和非法长度的处理,并说明 IPv4-mapped IPv6、Is4In6 与 Unmap 的转换边界。282 收藏 -
Go HTTP 客户端连接复用异常时,先检查 resp.Body 是否读到 EOF 并及时关闭,再用 httptrace.GotConn 的 Reused 字段观察 Transport 是否复用了连接。本文给出集中式读取模板、状态码场景和异常边界。282 收藏 -
Go net/http Request.MultipartReader 适合把 multipart/form-data 请求按 Part 流式读取,避免 ParseMultipartForm 为大文件建立完整表单结构。本文说明文件与普通字段的分流、整体请求上限、单文件超限判断和错误清理。282 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · Go教程 · database/sql · 类型转换 数据库驱动 Go 1.27 database/sql.ConvertAssign Rows.Scan
Go 1.27 新增 database/sql.ConvertAssign,把 Rows.Scan 使用的常见值转换逻辑提供给数据库驱动。本文用一个驱动扫描场景拆开源值、目标指针、类型错误和 NULL 边界,说明如何复用转换规则而不把驱动实现写成一套私有规则。281 收藏 -
Go 接口遇到同一字段有时返回字符串、有时返回数字时,可以为局部类型实现 UnmarshalJSON。本文用 json.RawMessage 区分输入形态,说明别名类型、null、空字符串与非法值的处理边界。281 收藏 -
Go 服务端处理上传或请求体时,通常先用 MaxBytesReader 设定请求级上限,再用 io.LimitReader 限制一次业务读取;本文解释两者的错误、关闭和超限判断差异。281 收藏 -
解释 Go time.Timer Stop 返回 false 的真实含义,区分 Go 1.23 前后的 timer channel 语义,并给出兼容旧版本与现代 Go 的安全复用判断。281 收藏 -
设置 GOPRIVATE 后仍看到 proxy.golang.org 请求,通常是模块路径未匹配、GONOPROXY 覆盖或 GOPROXY 回退造成的。本文按检查、匹配、架构选择和缓存复查四步定位。281 收藏 -
Go text/template 遇到嵌套 define 同名覆盖时,按关联模板、Parse 顺序、文件基名和 ExecuteTemplate 入口逐项定位,避免执行到错误定义。281 收藏