Go语言技术文章
-
Go 项目开启 vendor 后,不能只看目录是否存在。本文用 go env、go list -f 和 vendor/modules.txt 确认实际依赖目录,并解释构建命令与 go mod 命令的取源边界。113 收藏 -
Go os/exec 同时读取 StdoutPipe 和 StderrPipe 时,串行消费可能因管道缓冲写满而阻塞。本文给出 Start、双路读取、Wait 的修复顺序,并说明何时使用 CombinedOutput。113 收藏 -
embed.FS.Open 接收的是 io/fs 规则下的逻辑相对路径,直接传入带 ..、绝对路径或反斜杠路径会失败。本文按故障时间线解释根因,并给出可复用的清理与边界处理方式。113 收藏 -
围绕 Go net/url 的 Userinfo 展开,说明如何用 User 与 UserPassword 构造包含 @、冒号、斜杠、空格和中文的用户信息,并用 String 生成完整 URL、Parse 后取回字段,同时区分路径和查询参数的转义边界。113 收藏 -
Go 嵌入字段的方法提升遵循浅层优先规则,同一深度出现同名方法时短选择器会产生歧义。本文用结构体示例说明显式字段路径、外层统一入口与接口方法集检查方法。113 收藏 -
Go 的 http.Request.GetBody 是重新取得请求体的可选工厂。本文说明 NewRequest 的自动设置边界、手动补齐方式,以及再次调用 Client.Do 前怎样替换 Body。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 收藏