Go语言技术文章
-
Go读取tar成员类型应使用Reader.Next返回的Header.Typeflag。本文比较IsDir与名称后缀,提供只读清单程序,并说明旧式标志规范化、链接、未知类型和EOF的处理。433 收藏 -
介绍 Go crypto/x509 中 NewCertPool 与 AppendCertsFromPEM 的使用边界,演示如何从 PEM 构造独立信任池,并区分追加成功和证书链验证成功。433 收藏 -
用 Go time.LoadLocation 加载 IANA 时区,再通过 ParseInLocation 正确解释不带时区的日期字符串,并说明 Parse 的 UTC 默认值、数字偏移、时区缩写和夏令时边界。433 收藏 -
介绍 Go Zap 如何使用 AtomicLevel 在运行期动态调整日志最低等级,涵盖 Core 接入、SetLevel、文本解析、子 Logger 共享和生产权限边界。433 收藏 -
Goose 默认把单个 SQL 迁移放进事务;本文说明如何用 NO TRANSACTION 让指定文件绕过事务,并处理 Up、Down、失败恢复和上线检查。433 收藏 -
Go slog.NewLogLogger 可以把 slog.Handler 接到旧式 log.Logger 接口,让暂时不能改造的 Printf、Println 和 Output 调用进入新的结构化日志链路。本文说明桥接关系、级别选择、参数边界、Handler 配置和上线检查。433 收藏 -
用固定前缀记录解析器说明 Peek 的 nil Reader、空输入、部分前缀、底层错误与正式消费,补充缓冲区不足、零长度请求和返回切片的使用期限。433 收藏 -
Go 的 http.ParseSetCookie 并不是遇到任何非法属性都返回 error。本文按首段 cookie、属性解析和 Cookie.Unparsed 三层拆开排查,给出可记录原始异常属性的诊断写法。433 收藏 -
Go strings.Builder 看起来不生效,通常不是 WriteString 失效,而是忘了调用 String、用值接收者复制了非零 Builder、Reset 后又读取空结果,或把 Builder 在多个 goroutine 间共享。本文按现象拆开排查并给出稳妥写法。433 收藏 -
用 netip.Prefix.Contains 判断 IPv4、IPv6 网段归属,重点核对地址族、Masked 规范化和边界测试,避免把字符串比较或映射地址混进访问控制。432 收藏 -
Go 测试使用 t.Parallel 后,如果多个子测试复用父测试创建的临时目录、固定文件名或可变对象,就可能互相覆盖。本文解释调度边界,给出 t.TempDir 隔离夹具、识别共享资源和复查修复的实用方法。432 收藏 -
Go 空接口断言失败通常不是值看起来不对,而是动态类型与目标类型不完全一致。本文用 %T、comma-ok、类型 switch 区分值类型、指针类型和 typed nil。432 收藏 -
Go regexp 默认采用左侧优先匹配,调用 Longest 后会改为同一起点取更长结果。本文用最小示例比较两种策略,并说明 CompilePOSIX、子匹配和并发配置的边界。432 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 迭代器结果收集成新的切片。本文说明 slices.Values、自定义序列、nil 结果、深拷贝边界,以及已知长度时如何用预分配 append 控制容量。432 收藏 -
Go CGO 交叉编译出现 exec gcc not found 时,先确认目标平台、CGO_ENABLED 和 CC,再在目标 C 交叉编译器与关闭 CGO 之间选择,最后用二进制架构检查避免误用主机 gcc。432 收藏