Go教程技术文章
-
Go 1.22 引入的 slices.Concat 能按顺序合并多个切片。本文从空输入、容量增长和底层数组别名三个边界出发,给出可验证的使用方式和选择建议。165 收藏 -
用 Go archive/tar Reader.Next 读取带 PAX 稀疏扩展的归档,核对 Header.Size、空洞补零、PAXRecords 与遍历边界,并给出可复现的验收方法。299 收藏 -
用一个批量消费键值序列的场景,拆开 Go iter.Pull2 的 next、stop 与提前退出边界,说明如何把 Seq2 接入旧式 for 循环并避免遗漏清理。222 收藏 -
用 log/slog 的 HandlerOptions.AddSource 控制 source 字段,理解调用位置信息从哪里来、何时值得开启,以及如何在生产日志中验证它的代价。487 收藏 -
用 Go 的 slices.BinarySearchFunc 在结构体切片中按自定义字段查找,重点说明返回下标与 found 的含义、排序契约以及比较器写错时的排查方法。429 收藏 -
bytes.Buffer.Grow 不是越早调用越好。本文从容量、写入、Reset 和 Bytes 的真实关系出发,说明预留空间、复用缓冲区与避免长期保留大内存的边界。419 收藏 -
Go 1.26 中实际使用的是 runtime/debug.SetCrashOutput。本文用独立文件接收未恢复 panic 与致命错误输出,说明文件描述符复制、覆盖旧目标和关闭时序的边界。328 收藏 -
通过一个可复现的 slog 小实验,拆开 LogValuer、Handler.Enabled 与 Logger.Enabled 的调用顺序,说明昂贵字段怎样延迟计算,以及等级过滤能省下什么成本。479 收藏 -
用 log/slog 的 Enabled 判断和 LogAttrs 组织一次可验证的小实验,说明低级别日志何时被丢弃、昂贵属性何时仍会提前计算,以及 HandlerOptions.Level 与 LevelVar 的边界。368 收藏 -
Golang · Go教程 | 2天前 | Windows · 跨平台 · os · golang · 文件权限 · Windows unix Go 只读属性 os.File.Chmod FileMode
Go 的 os.File.Chmod 在 Unix 上修改权限位,在 Windows 上主要控制只读属性。本文用可运行示例说明 0o200、0o400、0o600 的平台差异、符号链接行为和跨平台验证方式。427 收藏 -
archive/zip.NewReader 要求 io.ReaderAt 和准确的字节大小,不能直接接收只有顺序读取能力的网络流。本文从接口边界出发,比较 bytes.Reader、临时文件和流式解压三种路径,给出资源释放、尺寸校验与安全路径检查的实用写法。123 收藏 -
测试 HTTP Handler 时,httptest.NewRequest 会按服务端请求语义填充 URL、Host、TLS 和 ContentLength。本文用路径、绝对 URL、HTTPS 与请求体四组样本,拆开检查请求目标边界,避免把客户端请求和服务端请求混在一起。349 收藏 -
Go 1.24 引入 runtime.AddCleanup 后,资源包装对象可以把兜底清理与显式 Close 分开。本文用一个文件描述符包装示例说明 AddCleanup、Cleanup.Stop、KeepAlive 的调用边界,以及为什么它不能替代显式关闭。108 收藏 -
Golang · Go教程 | 2天前 | 性能分析 · Go教程 · 运行时监控 · 直方图 · Go p99 Float64Histogram runtime/metrics Buckets Counts
runtime/metrics.Read 返回 Float64Histogram 后,P99 不能直接对 Buckets 求平均。本文用 Buckets 与 Counts 的累计权重定位分位桶,并说明负无穷、正无穷和样本不足时的处理边界。314 收藏 -
用 time.ParseDuration 解析带小数、负号和多个单位的时长,区分语法错误与 Duration 溢出,并给出可复用的校验写法。358 收藏