Go教程技术文章
-
go/types.Info.FileVersions 可以告诉静态分析工具每个 ast.File 使用的 Go 语言版本。本文用一组可运行的类型检查代码说明文件版本、Config.GoVersion、Package.GoVersion 的关系,并处理版本缺失、类型错误和未来版本等边界。440 收藏 -
Go 的 trace.Stop 太晚会让无关运行阶段混入追踪,也可能因 defer 顺序错误在文件关闭后仍尝试写入。本文用采集窗口和资源生命周期解释正确写法。440 收藏 -
Go 的 url.URL.JoinPath 会通过 path.Join 清理路径中的连续斜杠、./ 和 ../。本文用 API 路径、PathEscape 和方案对比说明为什么双斜杠会改变,以及什么时候不该使用 JoinPath。440 收藏 -
讲清 Go database/sql 中 Rows.Next 返回 false 的双重含义,给出 Query、Scan、Rows.Err 和 Close 的错误边界与可复用代码模板,避免把迭代失败误判为正常结束。440 收藏 -
用 iter.Pull 把 Go 的推送式 iter.Seq 转成可逐个取值的 next,并用 stop 正确处理读完、提前退出和并发调用边界。440 收藏 -
通过字段白名单和 log/slog 的 ReplaceAttr,为 Go 配置日志建立敏感字段脱敏边界,避免密码、Token 等环境变量原值进入日志。440 收藏 -
Go x/text/secure/bidirule 的 New 返回一个实现 transform.Transformer 的双向规则校验器。本文从字符串调用、分块 Transform、ErrInvalid 与 Reset 复用四个方面说明如何正确接入。440 收藏 -
Golang · Go教程 | 1天前 | 日志 · 标准库 · go · 工程实践 · Go 结构化日志 JSON日志 log/slog HandlerOptions slog.NewJSONHandler
Go slog.NewJSONHandler 会把每次日志调用编码成一行 JSON 对象,适合交给日志采集系统按字段检索。本文从输出 Writer、HandlerOptions、字段契约和生产边界出发,说明如何配置日志级别、来源信息与字段脱敏,并避免把结构化日志退化成字符串拼接。440 收藏 -
gojq 可在循环外解析并编译查询,循环内复用 Code,为每个 JSON 对象创建独立迭代器。本文给出完整 Go 示例,并说明多结果、运行错误及批处理集成的边界。440 收藏 -
编辑器保存配置时常用临时文件写入再重命名,Go 文件监听器看到的可能是多次事件而不是一次保存。本文用事件合并、稳定快照读取和重试窗口处理原子替换,避免读到半个文件,也避免漏掉真正的更新。439 收藏 -
Golang · Go教程 | 2个月前 | JSON · go · 后端开发 · 接口设计 · Go encoding/json JSON接口 DisallowUnknownFields Decoder
Go 的 JSON 接口要不要拒绝未知字段,关键不在于开关本身,而在于客户端兼容边界。本文用 Decoder.DisallowUnknownFields 拆解严格校验、错误定位、灰度发布和回滚策略。439 收藏 -
io.NewSectionReader 适合从一个可随机读取的数据源中切出固定区间。本文用 bytes.Reader 演示 Offset、Read、ReadAt、Seek 与越界 EOF 的实际边界,避免把局部读取误写成全量读取。439 收藏 -
Go 的 errors.Is 会沿错误包装树匹配哨兵值。本文用 %w 上下文包装、错误分类和 API 契约示例,说明为什么 ==、%v 拼接和重复 errors.New 会失效。439 收藏 -
Go GOMAXPROCS 默认值会结合逻辑 CPU、亲和性与容器配额。本文说明 Go 1.25 起的策略、显式覆盖及自动更新边界,提供只读示例和恢复默认的配置取舍。439 收藏 -
Peek用于只看不消费,UnreadByte用于退还最近读取的一个字节,二者不能机械配对。通过固定前缀识别与ASCII数字字段示例,说明共享Reader、借用切片、分隔符归属、短读与超长输入的处理边界。439 收藏