Go教程技术文章
-
Go atomic.Value 的零值 Load 可以返回 nil,但 Store(nil) 会 panic;本文说明首次 Store 如何固定具体类型,以及如何用结构体或指针安全表达空配置状态。479 收藏 -
用 Go httptest.NewRequest 构造 Handler 入站测试请求:绝对 URL 提供 Host,https scheme 提供非 nil 的 dummy TLS 状态,并说明请求体 ContentLength、Host 覆盖以及与真实 TLS 服务端的边界。479 收藏 -
sort.Search 找的是谓词第一次返回 true 的位置,不是直接判断相等。本文用升序和降序切片说明先 false 后 true 的单调条件,并处理未命中、重复值、空切片和插入位置。479 收藏 -
用一个可复用的 TextUnmarshaler 类型接入 Go flag.TextVar,讲清默认值、错误处理以及 TextVar、Var、Func 的选择边界。479 收藏 -
Go ZIP指定文件读取可通过完整条目名精确匹配完成。本文给出限制解压后大小、拒绝重名并关闭两层资源的写法,说明读取错误、内存归档与完整性边界。479 收藏 -
在 Go Expr 编译阶段用 AsBool 建立布尔返回契约,配合 WarnOnAny 处理 any 类型表达式,并区分编译错误、运行错误与结果接收边界。479 收藏 -
使用 Go go-diff 的 diffmatchpatch 按行压缩两段文本,经过 DiffMain 计算差异后还原原始行,并处理语义清理、换行和 UTF-8 边界。479 收藏 -
Go types.Scope.Names 会返回当前作用域中已经排序的名称。本文说明如何从 types.Info.Scopes 找到函数 Scope,如何区分当前层、父作用域和嵌套块,以及什么时候才需要自定义排序。479 收藏 -
区分 Go 文本 coverage profile 与二进制覆盖率目录,介绍多包测试、covdata merge、textfmt 和报告输出,说明统一统计口径与常见误区。479 收藏 -
Go netip.AddrPort.IsValid 只判断内部 IP 地址是否有效,端口 0 也会通过。本文用 AddrPortFrom、ParseAddrPort 和 TCPAddrFromAddrPort 说明零值地址、临时端口与网络连通性之间的边界。479 收藏 -
slices.Clip 会把 Go 切片的 cap 收紧到 len,避免后续 append 复用多余容量;但它不复制底层数组,真正要释放长期持有的大数组仍需建立独立副本。478 收藏 -
testing.T.Cleanup 会在当前测试及其子测试完成后执行,多个回调按后注册先执行。本文用 t.Run、t.Name 和事件记录说明父子测试清理归属、注册顺序、并行子测试边界及常见误区。478 收藏 -
用 Go filepath.WalkDir 按扩展名统计普通文件,说明目录内符号链接、错误回调、SkipDir、大小写和根路径链接的边界。478 收藏 -
Go 的 http.NewRequest 不能只看 ContentLength=0 判断 body 是否为空。本文对比 nil、http.NoBody、空 bytes.Reader/strings.Reader 与自定义 Reader,说明 Request.Body、ContentLength、GetBody 的组合语义,并给出可直接复用的判断代码。478 收藏 -
讲清 Go io.PipeWriter.CloseWithError 如何把生产端错误传给读端,覆盖 Close、EOF、部分数据、Read 循环和关闭顺序等关键边界。478 收藏