Go教程技术文章
-
Go base64.NewEncoder 写入成功不代表尾部已输出。文章解释三字节分组与尾部缓冲,给出检查 Copy、Close 错误的封装,区分编码器、缓冲层与文件收尾,并补充尾部长度测试与无填充编码边界。275 收藏 -
Go fuzzing 的种子语料既可以来自 f.Add,也可以来自 testdata/fuzz/FuzzTestName 目录。本文给出按 Fuzz 目标拆分目录、区分样本用途并纳入安全审计的组织方法。274 收藏 -
Go finalizer 遇到相互引用的对象环时,回收顺序无法建立,终结器也不保证执行。本文用显式 Close、断开反向引用和运行时诊断,把资源释放改成可控的工程路径。274 收藏 -
解释 Go 1.24 的 testing.B.Loop 如何自动划定基准计时边界,把初始化和清理排除在循环体耗时之外,并对比传统 b.N 写法的迁移注意事项。273 收藏 -
Go 的 flag.FlagSet 通过 ContinueOnError 把参数解析失败交给调用方处理。本文比较三种 ErrorHandling 策略,并给出可复用、可测试的解析函数写法。273 收藏 -
用 goquery.Attr 的第二个返回值区分 HTML 属性缺失和属性值为空,再把判断封装进一个可复用的 Go 解析小工具。272 收藏 -
Go sort.Find 可以同时返回有序切片中的命中下标和未命中时的插入位置。本文说明 cmp(i) 的方向、found 的判断、重复值边界与安全插入写法。272 收藏 -
Go exec.Cmd 应从命令环境副本追加受控覆盖,避免显式 Env 丢失继承项。本文说明 nil 与空切片、Dir 和 PWD、空值与删除,并给出完整示例及敏感变量继承的限制。269 收藏 -
Go 1.23 引入 iter.Seq 后,可以把过滤逻辑封装成惰性迭代器。本文从 yield 控制出发,演示多个过滤条件如何组合,以及下游返回 false 时怎样让上游及时停止。268 收藏 -
介绍 Go 1.24 及以上如何使用 crypto/x509 的 CertificatePolicies 限制证书链策略 OID,并说明策略图、anyPolicy、版本边界和排查方法。267 收藏 -
Go atomic.Int64保证单字段操作原子,但多个Load不构成同一时刻快照。本文用完整小程序说明并发加减、运行期采样、最终计数与周期取差,并归纳重置和对象复制的边界。267 收藏 -
Go net/url 解析带端口的域名和 IPv6 URL 时,Host、Hostname()、Port() 容易混用。本文用最小示例说明如何读取主机与端口,并处理方括号、Zone、缺失端口和非法端口边界。267 收藏 -
Go Fuzz 的种子语料可以分成代码里的 f.Add 样本和 testdata/fuzz/FuzzTestName 目录语料。本文用一个可迁移的 FuzzDecode 示例说明两种来源怎样配合、目录文件怎样命名、参数类型怎样对齐,以及失败样本如何沉淀为回归用例。265 收藏 -
Go time.AfterFunc 返回的 Timer 可以用 Stop 取消尚未启动的回调。本文按 Stop 的 true、false 两种结果说明取消窗口与竞态边界,并给出需要等待回调结束时的显式同步写法。264 收藏 -
讲清 Go testing.T.Context 与 Cleanup 的取消时序,演示后台 goroutine 如何通过 done 和 errCh 退出,并在 Cleanup 中安全完成并发断言。262 收藏