Go语言技术文章
-
Go 的 http.Request.GetBody 是重新取得请求体的可选工厂。本文说明 NewRequest 的自动设置边界、手动补齐方式,以及再次调用 Client.Do 前怎样替换 Body。113 收藏 -
Go 1.27 为多个底层工具加入 @file response file 解析。本文用 go tool compile 的最小示例说明参数文件的支持范围、空白与引号规则、版本边界,以及为什么它不是 go build 的通用参数替代品。113 收藏 -
Go net/http 的 Response.Uncompressed 为 true 时,表示 Transport 已把服务器返回的压缩响应透明解压。本文说明触发条件、字段变化、最小判断代码,以及如何用 DisableCompression 保留原始压缩响应。113 收藏 -
本文介绍在 GORM 中高效查询“未被某用户关联”的记录(例如:获取所有不属于用户 ID=1 的手机号),通过 LEFT JOIN + NOT 条件替代易出错的 .Related() 和 .Not() 组合,确保 SQL 语义正确且结果可靠。 本文介绍在 GORM 中高效查询“未被某用户关联”的记录112 收藏 -
time.After 适合一次性等待,但把它放进长循环后,定时器生命周期和退出路径就需要重新审视。本文用可运行的 Go 代码拆开一次性等待、可停止计时器与循环复用的边界。112 收藏 -
使用 embed.FS 提供嵌套资源时,fs.ValidPath 负责判断资源名是否符合 io/fs 约定,fs.Sub 再把目录边界固定下来。本文用最小示例验证路径校验、子文件系统和读取失败的边界。112 收藏 -
Go 的 os.File.Chmod 并不是跨平台等价的权限开关:Unix 会使用权限位及特殊模式位,Windows 当前只看 0o200 来切换只读属性。本文用同一段代码拆开模式位、符号链接和平台边界,给出可验证的写法。112 收藏 -
Go 模板选型的关键不在 API 是否相似,而在最终输出是否会被浏览器解析。本文用同一份数据说明 html/template 的上下文自动转义、text/template 的纯文本边界,以及可信 HTML 片段的使用条件。112 收藏 -
解释 Go regexp.Split 为什么不能可靠解析复杂 CSV,展示字段内逗号、转义引号和换行的边界,并给出使用 encoding/csv.Reader 的读取与错误处理方式。112 收藏 -
Go 客户端只在生产环境出现 x509 证书错误时,从系统根证书、容器 CA 包、证书链和 ServerName 四层排查,并用安全配置完成修复。112 收藏 -
Go context 创建派生上下文后应尽快调用 cancel。本文解释 WithTimeout 的定时器和父子关系为何需要主动释放,并给出函数、循环、goroutine 的安全写法。112 收藏 -
讲清 Go 中 string、byte、rune 与 UTF-8 字节的区别,演示 DecodeRuneInString 的读取方式,以及 ValidString 和 RuneError 的异常处理。112 收藏 -
讲清 html/template URI 上下文自动转义、template.URLQueryEscaper 与 url.Values.Encode 的边界,给出安全拼接单个和多个查询参数的 Go 示例。112 收藏 -
Go 的 encoding/csv Writer 会按字段内容自动决定是否加引号,但不会默认把空字符串写成双引号。本文解释 Comma、UseCRLF、Flush、Error 与全引用编码方案,解决批量导出时的格式兼容问题。112 收藏 -
sync.Cond 出现等待不返回时,先检查共享条件是否由同一把锁保护,再确认 Wait 是否位于 for 循环中。本文用原创 Go 示例拆开 Signal、Broadcast、条件状态与 channel 的适用边界,帮助定位所谓的唤醒丢失。112 收藏