Go语言技术文章
-
Go 解析无时区字符串时相差八小时,通常是把 UTC 解析规则、目标 Location 和数值偏移混为一谈。本文用 Parse 与 ParseInLocation 对比说明“解释字符串”和“In 转换显示”的差别,并给出 RFC3339、数据库及比较时间的稳妥写法。368 收藏 -
本地能下载私有 Go 模块,pkg.go.dev API 仍可能返回 not found。本文解释公共索引边界、GOPRIVATE 的真实作用,并给出私有代理与本地排查方案。368 收藏 -
Go 中 bufio.Writer.Write 成功并不代表底层资源已经写入,Flush 才会把缓冲内容交给文件、网络或自定义 io.Writer。本文说明 Flush 报错的原因、Write 与 Flush 的边界,以及文件、重试和 Sync 的处理清单。367 收藏 -
Go 模板调用自定义函数时,FuncMap 必须先于 Parse 注册。本文用最小示例解释解析期名称检查、执行期函数替换和常见排错边界。367 收藏 -
Go 的 bufio.Reader.Peek 只观察并不推进读取位置。本文用固定协议头示例说明如何先判断、再精确消费,处理 ErrBufferFull、短输入和预览切片生命周期,避免头部丢失或重复读取。367 收藏 -
Go 1.21 起,主模块 go.mod 的 go 行不能低于依赖模块的 go 行。本文区分自动工具链切换、直接失败与依赖回退,给出 go.mod、GOTOOLCHAIN 和 go.work 的排查与修复清单。367 收藏 -
Go测试需要临时文件时,直接使用testing.T.TempDir创建测试专属目录,测试及子测试结束后自动清理。本文给出文件读写、子测试隔离、GOTMPDIR与资源关闭的实用边界。367 收藏 -
用 Go log/slog 的 slog.Group 和 Logger.WithGroup 把请求、订单等字段放进稳定命名空间,并理解 TextHandler 与 JSONHandler 的输出差异。367 收藏 -
用 sync.Once、完成通道和 AfterFunc 的 stop 函数组合,解决取消回调与主动关闭并发时的重复清理、提前返回和竞态问题。367 收藏 -
本文说明 Go ed25519.Options 如何启用 Ed25519ph,重点讲清 SHA-512 摘要输入、Hash 与 Context 的配置,以及 PrivateKey.Sign 和 VerifyWithOptions 的互操作边界。367 收藏 -
用一个最小 Go 项目演示如何通过 //go:embed 把模板编译进 embed.FS,再用 ReadFile 读取、template.Parse 解析并执行,补充路径规则、错误处理、ParseFS 取舍与测试方法。367 收藏 -
说明 Go CrossOriginProtection 与 CORS 同时配置时的职责差异:前者决定非安全跨源请求能否进入业务处理器,后者决定浏览器能否跨源读取响应,并给出共享白名单、中间件顺序和测试矩阵。367 收藏 -
fs.Sub 可以把已有 FS 映射成以某个子目录为根的视图,嵌套调用时每一层路径都相对当前子 FS 解析。本文拆开根目录变化、符号链接风险与 os.Root 的安全边界,给出可复查的组合方式。367 收藏 -
Go os.OpenFile 的 perm 不是最终权限。本文用 umask、stat、UID/GID 和挂载状态拆解容器中权限看似失效的原因,并给出最小权限修复方法。366 收藏 -
用 Go httptest.NewRequest 构造带指定 Host 的服务端请求,区分绝对 URL、Request.Host 与 Header 中 Host 的边界,并给出 handler 测试中的断言写法和常见陷阱。366 收藏