Go教程技术文章
-
Go 的 crypto/mlkem.Decapsulate 只有在密文长度不正确时返回错误;长度正确但内容无效时会得到不匹配的共享密钥。本文给出错误传播、协议确认和日志脱敏的实用写法。122 收藏 -
讲解 Go bufio.Scanner 如何编写保留分隔符的 SplitFunc,覆盖 advance、token、atEOF、跨缓冲区匹配和尾部残片处理。121 收藏 -
Go 日志里遇到换行、制表符、引号或反斜杠时,直接打印 rune 容易让字段边界变得不可读。本文用 strconv.QuoteRune 生成稳定的单引号字符字面量,再比较 ASCII 和图形字符版本,补上无效 Unicode 码点与结构化日志的处理边界。121 收藏 -
长期运行的 Go worker 不应只等待 time.Ticker.C:把 ticker 的所有权交给 worker,用 context 定义退出条件,在退出路径调用 Stop,并根据周期变化选择 Reset 或重建,才能避免 goroutine 与定时任务生命周期失配。121 收藏 -
讲清 Go bufio.Scanner.Buffer 的初始缓冲区、最大 token 上限与错误处理,并给出 Scanner 和 bufio.Reader 的选型边界。120 收藏 -
big.Int.FillBytes 会把绝对值写成左侧补零的大端固定长度字节串,并返回原缓冲区;容量不足时会 panic。本文给出最小用法、BitLen 容量检查、零值与负数边界以及复用测试。120 收藏 -
用 Go 的 log/slog 配置 JSONHandler,在请求入口绑定 request_id、method 和 path,并把带字段的 Logger 传入业务层,统一结构化日志输出、分组、脱敏与性能边界。120 收藏 -
Go 的 archive/tar 只负责顺序读取归档条目,不会替业务自动决定输出目录边界。本文围绕路径穿越、绝对路径、符号链接、硬链接和设备节点,比较词法过滤、专用空目录与更强文件系统隔离三种方案,并给出一套拒绝危险类型、只写入目标目录的解包实现。120 收藏 -
Go time.Time 取整时,Truncate 向下归入已开始的时间窗口,Round 选择最近的时间刻度。本文用代码和边界表对比两者结果,并说明 Location、负时间和非正 Duration 的处理方式。119 收藏 -
Go Goldmark 默认按 CommonMark 解析 Markdown,表格语法需要显式接入 extension.Table。本文用一个最小 Go 示例说明 v1 的配置方式、Table 与 GFM 的选择、对齐输出和 v2 API 的迁移边界。119 收藏 -
用 Go time.ParseDuration 读取配置时长时,区分合法单位、空值默认、非法格式和业务范围校验,让超时与间隔配置在启动阶段可定位、可测试。119 收藏 -
Go 1.24 引入的 weak.Pointer 可以让缓存只保存弱引用。本文用元数据缓存示例拆解 weak.Make、Value、GC 可达性和并发重建边界,帮助你写出可安全丢弃、失效后可回源的缓存。118 收藏 -
Go fuzzing 找到失败输入后,如何把大而难读的样本缩成稳定的回归语料?本文说明最小化参数、失败语料目录、生成语料缓存和修复后的 go test 回归流程。118 收藏 -
从 200、206 和 416 的响应症状出发,解释 Go net/http ServeContent 如何依赖 io.ReadSeeker 处理 Range 请求、获取内容长度和定位读取位置,并给出文件、自定义 Reader 与并发排障示例。118 收藏 -
Go weak.Pointer 的比较规则能服务弱键映射,却不能替代业务 ID、持久句柄或对象存活证明。本文结合 Value、KeepAlive、终结器复活与内部指针边界,给出稳定 ID 和弱引用分离的实现方式。117 收藏