Go教程技术文章
-
Go slog.Logger 处理可选字段时,关键不是把空字符串或零值直接塞进日志,而是先判断字段是否存在,再条件追加 slog.Attr。本文用 LogAttrs、With、分组字段和高频日志路径说明缺失、零值、nil 的区别。170 收藏 -
使用 Go go/types 分析泛型约束时,可以通过 Union.Len 与 Term 按索引导出联合项,也可以在支持 Go 1.24 的环境中用 Union.Terms 迭代。本文说明如何读取 Term.Type、Term.Tilde,以及空联合项、索引越界和版本兼容边界。170 收藏 -
以日志提取为例,按 SubexpNames 与位置结果的组号对应关系构造字段映射,区分未匹配、空捕获和可选组缺省,并明确重复名称的处理策略。170 收藏 -
通过运行时指标采样场景讲清描述符发现、Kind 类型分派和直方图读取,说明升级兼容、样本复用及独立快照的处理方法。169 收藏 -
Go testing/synctest.Wait 会等待当前 bubble 内其它 goroutine 进入 durably blocked 状态。本文从最小并发测试、context 取消和虚拟时间三个场景说明它的用法,并梳理外部 I/O、bubble 外 goroutine 与死锁边界。169 收藏 -
用 Go SQLX 查询一列多行数据时,可以直接用 Select 填充 []string;结果较大或需要处理 NULL 时,再用 Queryx 手动遍历并检查 rows.Err()。169 收藏 -
Go encoding/hex 的 Dumper 按 hexdump -C 形式把字节写入 io.Writer。若最后一行不足 16 字节,Close 会补齐空白、ASCII 右栏和换行;本文说明 Write、Close、错误处理以及与 hex.Dump 的选择边界。169 收藏 -
Go 泛型函数不只可以在调用参数中推导类型,也能从已知函数类型、函数参数和返回值上下文中减少显式类型参数。本文用函数值赋值、嵌套传递和无上下文边界说明具体写法。169 收藏 -
用 pprof.Do、WithLabels 和 SetGoroutineLabels 说明租户标签如何传播到 goroutine profile,覆盖异步任务、长驻 worker、高基数和 Go 1.27 traceback 隐私边界。169 收藏 -
用 Go parser.ParseFile 做源码分析时,注释为空或节点位置无法回溯,通常不是 AST 丢了信息,而是漏传 ParseComments、没有复用 token.FileSet,或忽略了解析错误。本文从症状、根因到修复代码说明三者如何配合。168 收藏 -
Go 的 path.Clean 适合规范化 URL 这类正斜杠路径:它按词法规则合并斜杠、移除点段并处理 ..,但不检查文件是否存在,也不替代权限校验。168 收藏 -
Go mewkiz/flac可通过ParseNext逐帧解码,再遍历Subframes与各声道Samples。本文给出原创同步消费函数,说明帧与采样计量、Next的区别、错误处理和文件关闭。168 收藏 -
TCP 是字节流,单次 Read 不保证拿到完整网络帧。本文用 io.ReadFull 读取固定帧头和帧体,结合 binary.BigEndian 解析长度,并说明 EOF、UnexpectedEOF、超长帧和持续连接循环的处理边界。168 收藏 -
用 Context.Deadline 和 time.Until 计算 Go context.WithDeadline 的有效剩余时间,并区分无 deadline、提前取消、已经超时以及父 Context 更早截止等边界。168 收藏 -
Go io.MultiWriter可同步向多个目标写入同一份字节。本文用文件与摘要器示例说明如何复用分发器、编码暂存和批次缓冲,并保留短写、错误停止、尾批与关闭错误处理。168 收藏