Go语言技术文章
-
Go 的 os.CreateTemp 返回时文件仍处于打开状态。Windows 上把路径交给另一个程序前,必须先关闭 Go 文件句柄,再等待外部程序完成后清理临时文件。351 收藏 -
Go 统计整数二进制中 1 的数量,直接使用 math/bits 的 OnesCount 系列即可。本文按 uint、uint32、uint64 的宽度说明函数选择,演示切片汇总,并解释有符号整数转换时的补码边界。402 收藏 -
Go 创建多层目录时,os.Mkdir 只处理最后一级,os.MkdirAll 会补齐必要父目录。本文还解释 perm、umask、已存在目录与同名文件错误的处理边界。136 收藏 -
Go 分数运算使用 math/big.Rat 保留任意精度的分子和分母,结合 SetString、Add、Mul、Quo 与 Cmp 完成精确计算,最后再用 FloatString 输出小数。344 收藏 -
Go 追加日志却清空原文件,通常是 OpenFile 组合了 O_TRUNC。本文解释 O_APPEND、O_CREATE、O_TRUNC 的区别,并给出可复用的安全追加写法与并发边界。292 收藏 -
用 Go 的 math/rand/v2 处理切片随机化:用 Shuffle 原地打乱,用 Perm 生成不重复下标抽样,并说明数量边界、原切片副作用与安全随机数的选择。106 收藏 -
Go 里 Stat 会关注符号链接指向的目标,Lstat 则保留链接自身的信息。本文用 FileInfo、ModeSymlink、断链和 Readlink 示例说明如何选择。320 收藏 -
用 slices.BinarySearchFunc 在按字段排序的 Go 结构体切片中查找记录,说明比较器契约、未命中的插入点、重复字段和更新后的维护方式。366 收藏 -
Go 的 io.ReadFull 读取固定长度数据时,EOF 表示一个字节都没读到,UnexpectedEOF 表示已读到部分数据后提前结束。本文用 n 和 err 设计可靠的错误分支,并说明如何放进固定长度协议解析。476 收藏 -
用 Go 的 container/list 和 map 实现固定容量 LRU 缓存,覆盖命中更新、覆盖旧值、超限淘汰、容量边界和并发使用注意事项。321 收藏 -
Go io.Copy 返回 short write 时,问题通常在目标 Writer:它少写了数据却没有返回具体错误。本文用返回值、Writer 契约和 WriterTo/ReaderFrom 快路径区分读端错误与写端短写。336 收藏 -
用 Go container/ring 实现固定容量的最近采样窗口,说明如何写入、覆盖最旧值,并按时间顺序导出有效数据。110 收藏 -
Scanner.Bytes 返回的是可能被下一次 Scan 覆盖的底层字节视图。本文解释前面行会变化的原因,并给出 string、bytes.Clone 和 bufio.Reader 的选择。192 收藏 -
用 Go 的 container/heap 实现一个按优先级领取任务的队列,说明 Less、Push、Pop、heap.Init、heap.Fix 的配合方式,以及指针接收者、索引同步和并发使用边界。397 收藏 -
Go 的 Write 返回成功不代表文件已经写出:使用 bufio.Writer 时,数据可能仍在缓冲区。本文用一个完整写文件函数说明 Flush、Close、路径和打开模式的排查顺序。116 收藏