Go教程技术文章
-
Go maps.Equal 根据键集合与对应值比较两个 map。本文用配置对照示例说明顺序、nil 与空 map、键缺失与零值的区别,并介绍切片值应使用 EqualFunc、接口动态值与 NaN 的注意事项。378 收藏 -
Go slices.Compact 只会删除连续相等元素,直接用于 []error 时还会遇到错误实例身份和可比较性的边界。本文用 CompactFunc 按错误码、消息保留第一条原始错误,并说明何时应该改用 map 做全局去重。378 收藏 -
用 Go net/netip 完成地址解析、IPv4 映射识别、CIDR 前缀判断和稳定格式化,理清 Is4、Is4In6、Is6、Unmap、ParsePrefix 与 Masked 的使用边界。377 收藏 -
Go iter.Seq 用统一接口组合生成、筛选和转换,示例说明消费时计算、提前停止、可重入源与结果物化的取舍,避免把惰性遍历误当作缓存、快照或异步任务。377 收藏 -
Go maps.All 可以把 map 转成键值迭代器,直接用 range 读取每个键和值。本文说明它的使用方式、无序语义,以及与 maps.Insert、maps.Collect 的组合边界。377 收藏 -
本文说明 Go go-flags 中 group 与 namespace 的区别,用嵌套结构体把相关选项组织到命名参数组,并解释解析后的字段映射、命名冲突和自定义分隔符边界。377 收藏 -
Go 的 netip.Addr.StringExpanded 可以把 IPv6 地址输出为不使用双冒号压缩的完整八组格式。本文从解析、地址族判断和无效值边界出发,给出适合日志、序列化与固定格式对接的写法。377 收藏 -
用 Go filepath.EvalSymlinks 解析符号链接后的目标路径,区分相对路径、目标缺失、权限错误和链接循环等边界。376 收藏 -
Go log/slog.Logger.With 会返回带公共属性的派生 logger,适合复用组件名、请求 ID 和任务 ID。本文按字段生命周期说明 With 与单条日志参数的分工,并给出原 logger、并发请求和 Handler 边界的实用写法。376 收藏 -
Go 的 http.Request.Trailer 不是普通请求头的即时副本。本文从读取时序出发,说明服务端为什么要等 Body 返回 EOF 后再取尾部字段,并给出声明字段、读取请求体和处理空值的实用写法。375 收藏 -
fsnotify 默认不会递归监听目录。本文从新建子目录后收不到文件事件的现象出发,说明如何先遍历已有目录,再在 Create 事件中识别新目录并调用 Add 补充监听,同时处理路径判断、重复 Add、删除重命名和 Close 生命周期。375 收藏 -
用 os.ReadDir 构建单层目录索引,以 fs.ValidPath 约束相对名称,区分本机路径与 io/fs 名称,并说明部分读取、目录分类和平台转换的处理边界。375 收藏 -
Go strings.Builder 的容量优化关键不在盲目调用 Grow,而在于按最终文本的字节数估算预算、用 Len 和 Cap 观察结果,并把 String、Reset 与禁止复制非零 Builder 的边界分清。374 收藏 -
围绕 Go context.WithCancel 的生命周期,说明为什么创建后应立即 defer cancel,以及长任务如何让 worker 监听 Done 并正确收尾。374 收藏 -
Go runtime/metrics 通过 All 返回当前支持的指标描述。本文演示怎样按 Name、Description、Kind 和 Cumulative 筛选指标,并安全创建 Sample 读取,兼顾不同 Go 版本的支持集合差异。374 收藏