Go语言技术文章
-
atomic.Value 虽然接收 any,但同一个 Value 的 Store、Swap 和 CompareAndSwap 必须保持一致的具体类型。本文解释首个 Store 的类型锁定、nil 规则、常见 panic 以及统一快照结构的改法。444 收藏 -
用 os.DirFS 和 fs.WalkDir 固定文件系统边界,直接消费相对路径完成 Go 文件批处理,并说明路径转换、DirEntry、错误处理、排序和符号链接的性能边界。444 收藏 -
讲清 strconv.AppendQuote 如何把字符串追加为 Go 双引号字面量,说明返回值、缓冲区复用、转义边界,并给出可复现的基准比较模板。444 收藏 -
go.sum 被反复改写通常不是随机行为,而是依赖图、Go 工具链、tidy 兼容范围或工作区边界发生了差异。本文给出一套先看差异、再固定环境、最后决定提交的排查方法。443 收藏 -
Go ResponseRecorder 测试通过不代表客户端响应正确。本文以 HEAD 请求对比内存记录与真实服务器,说明头快照、Flush 和接口能力边界,并给出分层测试方案。443 收藏 -
Go 1.23 引入的 os.CopyFS 可以把 embed.FS 等 fs.FS 资源复制到本地目录。本文用一个嵌入静态资源的场景说明调用方式,并梳理目录创建、既有文件冲突、符号链接和首个错误的处理边界。443 收藏 -
在 Go 中用 crypto/rand.Read 生成固定长度的加密安全随机字节,说明切片长度、十六进制与 Base64 编码、错误边界,以及它和 math/rand 的使用区别。443 收藏 -
Go 判断链路本地 IP 时,可以先用 netip.ParseAddr 解析文本,再调用 Addr.IsLinkLocalUnicast。本文用 IPv4、IPv6 和带 zone 的 IPv6 示例说明返回值,并区分私有、回环、组播和无效地址。443 收藏 -
Go regexp.Expand 使用匹配索引从原文取出捕获组,并按模板追加到字节切片。本文通过资源标签示例说明变量边界、返回值、缺失组和批量展开的注意事项。443 收藏 -
说明 Go archive/zip.FileHeader.SetModTime 的使用方式、UTC 转换、MS-DOS 时间精度和 Modified 字段迁移边界。443 收藏 -
说明 snowflake.ID 如何用 Base58 生成可传输文本,再用 ParseBase58 还原编号,并梳理字符表、错误处理与排序语义边界。443 收藏 -
Go os.OpenFile 的 O_SYNC 会影响写入的同步语义,但它不是事务或跨文件原子提交。本文用 O_APPEND、O_CREATE、f.Sync 和 Close 对比写入配置、性能成本与资源错误处理边界。443 收藏 -
用 Go 1.23 的 iter.Pull 把 iter.Seq 转成 next/stop 逐项读取,覆盖 ok 判断、提前退出和 defer stop 的可复用写法。443 收藏 -
讲清 Go types.SizesFor 如何按 compiler 和 arch 选择布局模型,并用 types.Sizes 计算类型对齐、字段偏移与总大小,覆盖 nil、padding 和跨架构报告边界。443 收藏 -
本文说明 sync.Cond.Wait 为什么必须放在 for 循环里,解释唤醒事件与条件成立的区别,并用队列示例梳理 Locker、Signal、Broadcast 和共享状态的排障边界。443 收藏