Go教程技术文章
-
Go debug/gosym.Table.PCToFunc 接收一个 uint64 程序计数器,返回包含该地址的 *gosym.Func;查询不到时返回 nil。本文从已加载的符号表出发,说明如何读取函数名、Entry、End,并区分函数查询与源码行号查询。390 收藏 -
用 go tool trace -d=parsed 把 Go 执行追踪文件转换为解析事件文本,掌握输入准备、输出保存、调试模式区别与失败边界。459 收藏 -
Go 的 encoding/json 默认会忽略结构体中不存在的 JSON 字段。本文说明如何用 Decoder.DisallowUnknownFields 把请求字段边界前移到解码入口,并处理未知字段、类型错误、尾随 JSON 与接口兼容性取舍。161 收藏 -
Go log/slog.Group 可以把多个属性收拢到同一个日志组中。本文从请求日志场景说明 key、属性参数、空键和动态属性的处理方式,并比较 Group、GroupAttrs 与 WithGroup 的选择边界。225 收藏 -
通过带业务字段的 QuotaError 示例,说明 Go errors.Is 自定义 Is 方法的浅比较规则、%w 包装、目标方向与 typed nil 的处理。310 收藏 -
Go testing.T.Output 返回一个适合多行诊断的 io.Writer,但不会自动补换行。本文说明并发写入如何按记录同步、行缓冲何时刷新,以及测试函数和父测试结束后为何不能继续 Write。248 收藏 -
用 Go debug/elf.File.DWARF 从 ELF 文件取得 DWARF 数据,说明打开与关闭边界、调试信息缺失的处理,以及如何按条目读取编译单元和函数名。138 收藏 -
Go errors.Join 可以把多个校验错误合并成一个返回值,同时保留 errors.Is 和 errors.As 的判断能力。本文从一个批量配置校验器出发,说明 nil 过滤、哨兵错误、自定义错误类型和错误展示之间的边界。492 收藏 -
Go os.Root.OpenFile 可以把文件名解析限制在已打开的根目录下。本文说明如何创建工作区 Root、按相对路径读写文件、选择 flag 与 perm,并处理越界路径、非法权限位和资源关闭问题。238 收藏 -
用 slog.NewLogLogger 把旧 log.Logger 调用桥接到 slog.Handler,说明固定级别、Handler.Enabled 过滤、文本输出和结构化字段的边界。109 收藏 -
用 Go archive/tar 读取 tar 条目的 PAXRecords 扩展属性,本文覆盖 Reader.Next、键存在判断、命名空间、Xattrs 等价关系和写入优先级。318 收藏 -
Go expvar 可通过JSON接口暴露进程变量。本文从一个小服务出发,讲解指标语义、一次注册、显式路由、本机监听及采集结果的解释。409 收藏 -
本文用 Go 标准库 debug/plan9obj 读取自有 Plan 9 a.out 文件的符号表,讲清 Symbols 返回的 Sym 字段、Open 与 Close 的调用顺序,以及 ErrNoSymbols 与普通读取错误的区别。464 收藏 -
Go html/template 的 Delims 可以在解析前切换模板动作分隔符。本文用 [[ ]] 示例说明设置时机、Parse 与 Execute 的边界、旧语法表现和多模板集合的处理方式。352 收藏 -
Go text/template 的 FuncMap 用来把 Go 函数注入模板。本文从解析前注册开始,说明单返回值、值加 error、管道传参和同名替换的边界,并给出可直接改造的模板示例。125 收藏