Go教程技术文章
-
Go Zap 的 zap.Object 适合把一个自定义对象作为嵌套结构写入日志。本文从 ObjectMarshaler 和 zapcore.ObjectEncoder 的职责开始,给出请求元数据的原创实现,说明字段命名、错误返回、指针接收者和敏感信息边界。380 收藏 -
Go Zerolog 自带 level 字段,但接入统一日志平台时,业务常常还需要 severity 等固定字段。本文从字段不一致的排查场景出发,说明如何用 Hook.Run 读取 zerolog.Level,统一补充 severity,处理 NoLevel、全局 logger、局部 logger 和字段覆盖边界。475 收藏 -
fsnotify的一次保存可能产生多次通知。本文用单文件监听示例说明父目录过滤、静默窗口和单循环定时器,给出完整Go代码,并解释持续写入、慢处理、读取失败和通知丢失的限制。280 收藏 -
Zerolog 可以通过 Logger.With 创建带固定业务字段的子日志器。本文用 service、component 与 request_id 区分不同生命周期,说明怎样绑定、注入和复查字段边界,避免共享日志器被动态字段污染。316 收藏 -
fsnotify 默认不会递归监听目录。本文从新建子目录后收不到文件事件的现象出发,说明如何先遍历已有目录,再在 Create 事件中识别新目录并调用 Add 补充监听,同时处理路径判断、重复 Add、删除重命名和 Close 生命周期。375 收藏 -
Cobra 可以通过 Command.Args 在 RunE 执行前校验位置参数数量。本文用 RangeArgs 讲清闭区间约束,并对比最小、最大、固定数量校验器与 MatchAll 组合方式。138 收藏 -
Go fsnotify 同时提供 Events 与 Errors 两个通道。本文从事件正常但错误丢失的排查场景出发,说明如何用一个 select 同时消费两个通道,区分关闭、监听错误与事件位掩码,并拆开 NewWatcher、Add、消费和 Close 的生命周期边界。452 收藏 -
Cobra通过父命令的PersistentFlags向后代共享选项。本文用完整Go示例比较根选项、命令组选项和局部选项,说明目标命令读取、同名遮蔽及TraverseChildren的适用范围。272 收藏 -
用 Cobra 的 MarkFlagsRequiredTogether 约束 username 和 password 成对出现,并说明 flag 定义位置、RunE 执行边界和常见配置误区。284 收藏 -
Go io.TeeReader 会把通过它读取到的字节同步写入另一个 Writer。本文用一个计数 Writer 统计流经 Reader 的字节数,并说明无内部缓冲、写入错误传播、EOF 与部分读取等边界,适合上传进度、摘要计算和流式审计场景。413 收藏 -
Golang · Go教程 | 1星期前 | 日志 · 标准库 · go · 工程实践 · Go 结构化日志 JSON日志 log/slog HandlerOptions slog.NewJSONHandler
Go slog.NewJSONHandler 会把每次日志调用编码成一行 JSON 对象,适合交给日志采集系统按字段检索。本文从输出 Writer、HandlerOptions、字段契约和生产边界出发,说明如何配置日志级别、来源信息与字段脱敏,并避免把结构化日志退化成字符串拼接。440 收藏 -
解释 Go bufio.Writer.AvailableBuffer 返回切片的有效期,说明 append 后立即 Write 的正确用法、下一次写操作的失效边界,以及容量不足和 Flush 错误的处理方式。171 收藏 -
使用 Go transform.NewReader 配合 GBK Decoder 将旧编码文本转换为 UTF-8。本文澄清包路径,给出有界读取示例,并说明编码来源、解码错误、输入输出上限与业务内容边界。122 收藏 -
Go 的 x509.CertPool.AppendCertsFromPEM 用于把 PEM 编码的证书追加到信任池。本文说明单个证书、证书链、系统根证书合并和 TLS 使用时的判断边界。193 收藏 -
说明 Go archive/zip.FileHeader.SetModTime 的使用方式、UTC 转换、MS-DOS 时间精度和 Modified 字段迁移边界。443 收藏