Go语言技术文章
-
用 iter.Pull 把 Go 的推送式 iter.Seq 转成可逐个取值的 next,并用 stop 正确处理读完、提前退出和并发调用边界。440 收藏 -
Go 服务调整 TLS 最低版本后旧客户端握手失败,通常不是证书单一问题,而是双方允许的协议版本没有交集。本文用 tls.Config、MinVersion、MaxVersion 和连接状态说明如何定位,并给出隔离旧客户端入口的兼容策略。440 收藏 -
Go 客户端自定义 TLS 拨号或按 IP 连接时,ServerName 缺失会破坏主机名校验与 SNI 证书选择。本文区分拨号地址、证书身份和根证书信任,给出 http.Transport 与 tls.Client 的安全修复写法。440 收藏 -
通过字段白名单和 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 文件监听器看到的可能是多次事件而不是一次保存。本文用事件合并、稳定快照读取和重试窗口处理原子替换,避免读到半个文件,也避免漏掉真正的更新。439 收藏 -
Golang · Go教程 | 2个月前 | JSON · go · 后端开发 · 接口设计 · Go encoding/json JSON接口 DisallowUnknownFields Decoder
Go 的 JSON 接口要不要拒绝未知字段,关键不在于开关本身,而在于客户端兼容边界。本文用 Decoder.DisallowUnknownFields 拆解严格校验、错误定位、灰度发布和回滚策略。439 收藏 -
Golang · Go问答 | 2个月前 | golang · 数据库 · 工程实践 · database/sql · Go 数据库驱动 database/sql Rows.NextResultSet 多结果集
当一条数据库语句返回多个结果集时,Rows.Next 只会遍历当前结果集,必须配合 NextResultSet 切换到下一组数据。本文用可复现的 database/sql 代码说明遍历顺序、Err 检查和驱动兼容边界。439 收藏