Go语言技术文章
-
Go 的 csv.Reader 默认拒绝字段内裸双引号。开启 LazyQuotes 后,非引号字段可包含双引号,引号字段也可出现非成对双引号,但逗号、换行和字段数规则仍然生效。486 收藏 -
sync.Pool 适合复用可丢弃的临时对象,但不保证对象长期留在池里。本文从 GC 周期、victim cache、Get/New 边界和实际代码说明对象为什么会消失,以及哪些场景不该依赖 Pool。486 收藏 -
Go 的 crypto/x509 校验证书链时,Roots 是信任锚,Intermediates 只是补齐链路。本文从 PEM 解析开始,演示如何构造 CertPool、设置 VerifyOptions,并区分 DNS、用途和证书有效期等校验边界。486 收藏 -
Go fs.WalkDir 传给回调的是逻辑路径和目录项,按文件名筛选时应先用 path.Base 取出最后一段,再用 path.Match 做完整匹配,并分别处理模式错误、访问错误和目录剪枝。486 收藏 -
httputil.DumpResponse 没有响应头过滤参数。本文用复制 Response、复制 Header、大小写不敏感删除和 body=false 的方式生成安全调试摘要,并说明需要正文时怎样避免误伤原响应。486 收藏 -
Go 按分钟对齐时间的最小写法是 t.Truncate(time.Minute)。本文说明它的绝对时间语义、返回值和时区边界,并比较 Truncate、Round 与 time.Date 的适用场景。486 收藏 -
Go 的 fs.Sub 可以把一个 fs.FS 中的子目录挂载成新的文件系统。本文用 embed.FS 说明目录参数、相对路径、错误处理,以及如何把子 FS 接入 fs.ReadFile 和模板加载。486 收藏 -
Go 的 os.Root 可以把文件访问限制在一个目录树内。本文从 os.OpenRoot 和 Root.Open 的最小写法出发,说明 ..、符号链接、Root.FS 与 OpenInRoot 的边界,避免把路径清理误当成安全限制。486 收藏 -
先打开一个可复用的 os.Root,再用相对路径调用 Root.OpenFile;文章说明返回文件句柄的使用方式,以及 Root 与 *os.File 的关闭边界。486 收藏 -
Go strings.FieldsSeq 返回按 Unicode 空白分隔的字符串迭代器。本文用最小示例说明怎样逐个读取字段、提前停止和处理空输入,并解释它与 strings.Fields 的版本与内存边界。486 收藏 -
区分系统信任扩展与私有证书池,展示PEM加载、RootCAs及专用HTTP客户端绑定,定位主机名、证书链、有效期和容器环境导致的TLS失败。486 收藏 -
atomic.Value 适合发布读多写少的完整配置快照,但第一次 Store 会锁定具体类型,nil 与类型混用会 panic。本文给出 *Config 封装、深拷贝规则、基准方法及 atomic.Pointer 取舍。485 收藏 -
Go 的实验性 simd API 不把向量宽度写进类型。本文说明如何用 Len 动态分块,并用 Part 接口正确处理不足一个向量的切片尾部。485 收藏 -
pkg.go.dev API 分页同步遇到 nextPageToken 不可继续使用时,应固定原请求参数、回到第一页并用稳定键幂等合并,避免漏数据和无限重试。485 收藏 -
Go 的 ctx.Err() 只能告诉你已取消或已超时,context.Cause(ctx) 才能携带主动取消的具体原因。本文用原创示例拆开主动取消、超时取消和父子上下文竞争时的判断方式。485 收藏