Go语言技术文章
-
用 Go debug/buildinfo.ReadFile 读取已构建二进制中的主模块、依赖版本与版本控制信息,配合发布校验避免拿错构建产物。438 收藏 -
Go 1.23 引入的 reflect.Value.Seq2 可以把数组、map、切片或字符串暴露成键值迭代器。本文用可运行示例说明 Value 回调、Interface 类型断言、yield 返回 false 提前停止,以及不支持 Kind 时的边界。213 收藏 -
Go 的字符串按字节保存,同一个可见字符可能有预组合和组合字符两种 UTF-8 表示。本文用 golang.org/x/text/unicode/norm 判断 NFC、统一输入,并解释规范化前后的字节长度边界。263 收藏 -
Golang · Go问答 | 3天前 | go · 路由 · net/http · ServeMux · 兼容性 · Go ServeMux PathValue http.Request.Pattern 路由模式
Go 1.22 引入增强路由后,http.Request.Pattern 可以告诉处理器究竟是哪条 ServeMux 模式命中了请求。本文用 GET /orders/{id} 实验说明 Pattern 与 PathValue 的区别、未命中时的空值行为,以及旧路由兼容判断。415 收藏 -
Go 的 log/slog 可以把日志级别集中交给 HandlerOptions 管理,再用 LevelVar 在运行时切换,而 ReplaceAttr 适合统一字段格式。本文用一条可运行的配置链说明三者的职责边界、切换时机与验收方法。310 收藏 -
Go 测试里的临时目录、数据库连接和后台 goroutine 不该靠测试末尾的一行手工清理。用 testing.TB.Cleanup 注册逆序清理函数,再结合 t.Run 与 t.Parallel 的父子边界,可以让失败测试和并行子测试都回收自己的资源。159 收藏 -
Go 1.23 引入的 unique 包适合把可比较值规范化为可比较的 Handle。本文用一个小型标签池说明 unique.Make、Handle.Value 和垃圾回收之间的边界:句柄要保留多久、为什么比较更轻,以及何时不该把它当成永久缓存。322 收藏 -
go/types.Info.FileVersions 可以告诉静态分析工具每个 ast.File 使用的 Go 语言版本。本文用一组可运行的类型检查代码说明文件版本、Config.GoVersion、Package.GoVersion 的关系,并处理版本缺失、类型错误和未来版本等边界。440 收藏 -
runtime/cgo.Handle 用整数句柄把 Go 值交给 C,再由 Go 通过 Value 取回。本文用一次回调拆开句柄表、Delete 时机、失效句柄和 Go 指针规则,帮助你判断什么时候该用 Handle。278 收藏 -
Go 的 container/heap 允许在队列元素优先级变化后用 heap.Fix 恢复堆序。本文从 heap.Interface 的索引维护出发,拆解 Fix、Remove 与 Pop 的边界,给出可运行的可变优先队列示例。467 收藏 -
用 Go 的 math/big.Int.FillBytes 把大整数写入固定长度的大端字节字段,理解绝对值、左侧补零和容量不足 panic 的边界,并给出可验证的协议字段校验写法。241 收藏 -
Golang · Go教程 | 3天前 | 标准库 · 静态分析 · Go教程 · go/parser · go/ast · Go ast go/ast parser.SkipObjectResolution go/types
Go 的 parser.SkipObjectResolution 会跳过已经过时的语法级对象解析,减少解析阶段的 CPU 和内存开销。本文用 ParseFile、ast.File 和 go/types 的最小示例说明它保留什么、舍弃什么,以及何时必须补上类型检查。310 收藏 -
Go 泛型约束里的类型集和方法集不是一回事。本文用 Number、Stringer、Format 三个真实标识符说明为什么 T 不能随意调用方法,以及如何选择收窄约束、显式转换或交给 fmt 处理。333 收藏 -
Go 的 html/template.URLQueryEscaper 适合把模板参数放进 URL 查询值,但它不是多值参数构造器。本文对照空格、加号、& 和 url.Values.Encode 的输出,给出可复核的写法与边界。441 收藏 -
用 sync/atomic 的 atomic.Uint64.And 原子清除状态位,理解它返回旧值的语义、与 Load 的配合方式,以及何时应改用 CompareAndSwap。428 收藏