Go语言技术文章
-
用 Go textproto.MIMEHeader.Del 按规范化键名删除请求头字段及其全部值,并区分 Del、Get、Values 与直接 map 访问的边界。441 收藏 -
通过字段白名单和 log/slog 的 ReplaceAttr,为 Go 配置日志建立敏感字段脱敏边界,避免密码、Token 等环境变量原值进入日志。440 收藏 -
Go 子切片不会复制底层数组,长期保存一个很小的窗口也可能让大数组持续可达。本文从 len、cap 和引用关系入手,说明何时必须复制、full slice expression 能解决什么,以及如何避免缓存和结构体字段继续持有旧数组。440 收藏 -
Go ldflags 注入版本变量失败,应先核对包级字符串声明和完整符号路径,再检查引号、脚本覆盖与实际产物。给出 main.Version 最小示例和包内变量写法,区分链接期赋值与运行时覆盖。440 收藏 -
Go 程序不要把用户配置目录写死为 $HOME/.config。os.UserConfigDir 会按平台选择配置根目录,但环境变量异常时也会返回错误。本文给出从定位、拼接应用子目录到安全写入配置文件的最小实践。440 收藏 -
net.LookupTXT 返回的是 TXT 记录组成的字符串切片;单条 TXT 记录内部有多个字符串片段时,Go 会把它们拼成一个字符串。生产代码应使用带超时的 Resolver.LookupTXT,并明确保留记录边界、处理错误和限制日志内容。440 收藏 -
Go x/text/secure/bidirule 的 New 返回一个实现 transform.Transformer 的双向规则校验器。本文从字符串调用、分块 Transform、ErrInvalid 与 Reset 复用四个方面说明如何正确接入。440 收藏 -
Golang · Go教程 | 2星期前 | 日志 · 标准库 · go · 工程实践 · Go 结构化日志 JSON日志 log/slog HandlerOptions slog.NewJSONHandler
Go slog.NewJSONHandler 会把每次日志调用编码成一行 JSON 对象,适合交给日志采集系统按字段检索。本文从输出 Writer、HandlerOptions、字段契约和生产边界出发,说明如何配置日志级别、来源信息与字段脱敏,并避免把结构化日志退化成字符串拼接。440 收藏 -
解释 Go Testify 的 AssertExpectations 为什么只能证明声明的 mock 期望被满足,不能单独证明调用次数完全正确,并用 Once、Times、AssertNumberOfCalls 和参数匹配清单补齐测试约束。440 收藏 -
gojq 可在循环外解析并编译查询,循环内复用 Code,为每个 JSON 对象创建独立迭代器。本文给出完整 Go 示例,并说明多结果、运行错误及批处理集成的边界。440 收藏 -
Go GOMAXPROCS 默认值会结合逻辑 CPU、亲和性与容器配额。本文说明 Go 1.25 起的策略、显式覆盖及自动更新边界,提供只读示例和恢复默认的配置取舍。439 收藏 -
Go archive/tar 读取 unexpected EOF 时,关键是区分正常归档结束与条目数据未读满。本文结合 Header.Size、实际读取字节数和 Next 的边界行为,给出定位截断归档的排查写法。439 收藏 -
Peek用于只看不消费,UnreadByte用于退还最近读取的一个字节,二者不能机械配对。通过固定前缀识别与ASCII数字字段示例,说明共享Reader、借用切片、分隔符归属、短读与超长输入的处理边界。439 收藏 -
Go time.Time.AppendBinary 可以把时间追加到已有 []byte,并返回可交给 UnmarshalBinary 的二进制表示。本文说明追加缓冲区、时区偏移、错误处理和版本边界。439 收藏 -
Go x/text/unicode/bidi 的 Ordering 用于保存段落的视觉顺序。本文从 Paragraph.Order 出发,演示怎样遍历 NumRuns 和 Run(i),读取每段方向、原始位置与文本,并说明行级排序、UTF-8 字节位置和重新设置段落后的失效边界。439 收藏